Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 工程数学软件 > MATLAB论坛
MATLAB论坛 一切MATLAB相关问题在此讨论。
回复
 
主题工具 显示模式
旧 2009-07-16, 16:57   #1
傻帽之
初级会员
 
注册日期: 2009-07-16
帖子: 8
声望力: 0
傻帽之 正向着好的方向发展
默认 急求:MATLAB编写m文件

已知一输出波形,图形横轴为时间,纵轴输出就是m文件前输出的一系列数值。要求:当波形中第一次出现0时,0之前按原来输出,0之后的输出无论原来输出是什么全输出0。
傻帽之 当前离线   回复时引用此帖
旧 2009-07-16, 17:06   #2
傻帽之
初级会员
 
注册日期: 2009-07-16
帖子: 8
声望力: 0
傻帽之 正向着好的方向发展
默认 回复: 急求:MATLAB编写m文件

希望各位高手能帮忙解答一下,急需,谢谢!
傻帽之 当前离线   回复时引用此帖
旧 2009-07-17, 15:18   #3
wyq17008
初级会员
 
注册日期: 2008-11-11
年龄: 48
帖子: 21
声望力: 17
wyq17008 正向着好的方向发展
默认 回复: 急求:MATLAB编写m文件

简单一个判断语句就可以了啊
wyq17008 当前离线   回复时引用此帖
旧 2009-07-18, 02:34   #4
silas_xue
高级会员
 
注册日期: 2008-11-01
年龄: 39
帖子: 406
声望力: 26
silas_xue 是一个将要出名的人
默认 回复: 急求:MATLAB编写m文件

lz 说说我的个人意见
indices = find(X==0); %%suppose X is the input array and a 1-d array
X_first_zero_loc = indices(1);
X(X_first_zero_loc:end) = 0;
希望可以对你有些帮助


Thx for reading.
PS:若还算满意,直接点击“Thanks”,再次登陆时亦便于查看回答是否真的帮到你了。
通过点击本人帖子旁边的ID 可以使用“发送悄悄话给silas_xue”与我进行联系
个人观点 仅供参考 多多交流 相互学习
silas_xue 当前离线   回复时引用此帖
旧 2009-07-18, 11:01   #5
傻帽之
初级会员
 
注册日期: 2009-07-16
帖子: 8
声望力: 0
傻帽之 正向着好的方向发展
默认 回复: 急求:MATLAB编写m文件

首先非常感谢silas xue,我试了一下,但是仿真时出现错误“Evaluation of expression resulted in an invalid output. Only finite double vector or matrix outputs are supported”,这是怎么回事呢?
m文件前的图见附件
上传的附件
文件类型: rar 图.rar (8.0 KB, 8 次查看)

此帖于 2009-07-18 11:31 被 傻帽之 编辑。
傻帽之 当前离线   回复时引用此帖
旧 2009-07-19, 21:46   #6
silas_xue
高级会员
 
注册日期: 2008-11-01
年龄: 39
帖子: 406
声望力: 26
silas_xue 是一个将要出名的人
默认 回复: 急求:MATLAB编写m文件

lz 不客气 多多交流 共同进步
我写的只是伪代码 用于表达个人的意见 主要用find( )语句确定数组中第一个为0的元素位置 然后使用赋值语句即可 建议lz出现的调试错误从语句变量的类型和维数考虑

这里是一个小demo 说明个人意见 希望可以对你有些帮助
a = ones(1,10);
b = zeros(1,size(a,2));
a(1,8) = 0; a(1,6)=0;
b = find(a==0);
out(1,1: (b(1,1))) = a(1,1: (b(1,1)));
out(1,(b(1,1)+1):size(a,2)) = 0;

Thx for reading.
PS:若还算满意,直接点击“Thanks”,再次登陆时亦便于查看回答是否真的帮到你了。
通过点击本人帖子旁边的ID 可以使用“发送悄悄话给silas_xue”与我进行联系
个人观点 仅供参考 多多交流 相互学习
silas_xue 当前离线   回复时引用此帖
旧 2009-07-20, 10:34   #7
傻帽之
初级会员
 
注册日期: 2009-07-16
帖子: 8
声望力: 0
傻帽之 正向着好的方向发展
默认 回复: 急求:MATLAB编写m文件

可能我开始说的不太清楚,我再详细给你描述一下:我的输入是随时间变化的,除了跳变点处其他都是连续的,没法用矩阵表示。还有当前面输出第一次为0时就要求后面全部输出0,不需要知道一共几个0点,关键是找出这个跳变点,所以我感觉用find命令可能不行
傻帽之 当前离线   回复时引用此帖
旧 2009-07-21, 15:04   #8
傻帽之
初级会员
 
注册日期: 2009-07-16
帖子: 8
声望力: 0
傻帽之 正向着好的方向发展
默认 回复: 急求:MATLAB编写m文件

silas xue,麻烦你再帮我解决一下这个问题,急需,谢谢
傻帽之 当前离线   回复时引用此帖
旧 2009-07-22, 03:29   #9
silas_xue
高级会员
 
注册日期: 2008-11-01
年龄: 39
帖子: 406
声望力: 26
silas_xue 是一个将要出名的人
默认 回复: 急求:MATLAB编写m文件

lz 我看到贴上来的图是阶跃函数和冲击函数的线性组合 所以以为是离散点 不好意思
说说我的个人意见
根据你的描述 如果是幅值连续函数 应当是非连续函数中第一类断点的判断问题 满足左连续 右连续 但是改点不连续 跳变的点 由于仍有数学意义 方法上 可以归结到奇异点检测的范畴
lz可以google或者baidu一下 先了解一下这方面的数学知识 然后看一下这方面检测的经典方法 再做决定选择何种方法 例如 可以使用小波进行奇异点的检测
如果从纯数学角度考虑 可以求左右导数进行比较 把导数值大于某一阈值的点认为是解 若跳动幅度普遍较大 处理上 可以把左右导数近似为左右差分 然后进行比较
希望可以对你有些帮助
silas_xue 当前离线   回复时引用此帖
旧 2009-07-22, 16:02   #10
傻帽之
初级会员
 
注册日期: 2009-07-16
帖子: 8
声望力: 0
傻帽之 正向着好的方向发展
默认 回复: 急求:MATLAB编写m文件

silas xue,我的问题好像没有你说的这么专业,你理解的太深了。现在我把我的simulink仿真模型和m文件放在附件中。麻烦你再给我看一下,谢谢!
注释:我用的是MATLAB6.5。其他的m文件都是对的,不用做任何修改,你只需要编写蓝框中的wave文件。不加wave时的输出就是前面我发的那个图片。
运行整个模型前,需要先运行table和TAB文件。
上传的附件
文件类型: rar 模型.rar (27.4 KB, 7 次查看)
傻帽之 当前离线   回复时引用此帖
回复

主题工具
显示模式

发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛启用 表情符号
论坛启用 [IMG] 代码
论坛禁用 HTML 代码



所有时间均为北京时间。现在的时间是 01:33


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.