查看完整版本 : [MATLAB毕业设计] 急求:MATLAB编写m文件
已知一输出波形,图形横轴为时间,纵轴输出就是m文件前输出的一系列数值。要求:当波形中第一次出现0时,0之前按原来输出,0之后的输出无论原来输出是什么全输出0。
wyq17008
2009-07-17, 15:18
简单一个判断语句就可以了啊
silas_xue
2009-07-18, 02:34
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,我试了一下,但是仿真时出现错误“Evaluation of expression resulted in an invalid output. Only finite double vector or matrix outputs are supported”,这是怎么回事呢?
m文件前的图见附件
silas_xue
2009-07-19, 21:46
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”与我进行联系
个人观点 仅供参考 多多交流 相互学习
可能我开始说的不太清楚,我再详细给你描述一下:我的输入是随时间变化的,除了跳变点处其他都是连续的,没法用矩阵表示。还有当前面输出第一次为0时就要求后面全部输出0,不需要知道一共几个0点,关键是找出这个跳变点,所以我感觉用find命令可能不行
silas xue,麻烦你再帮我解决一下这个问题,急需,谢谢
silas_xue
2009-07-22, 03:29
lz 我看到贴上来的图是阶跃函数和冲击函数的线性组合 所以以为是离散点 不好意思
说说我的个人意见
根据你的描述 如果是幅值连续函数 应当是非连续函数中第一类断点的判断问题 满足左连续 右连续 但是改点不连续 跳变的点 由于仍有数学意义 方法上 可以归结到奇异点检测的范畴
lz可以google或者baidu一下 先了解一下这方面的数学知识 然后看一下这方面检测的经典方法 再做决定选择何种方法 例如 可以使用小波进行奇异点的检测
如果从纯数学角度考虑 可以求左右导数进行比较 把导数值大于某一阈值的点认为是解 若跳动幅度普遍较大 处理上 可以把左右导数近似为左右差分 然后进行比较
希望可以对你有些帮助
silas xue,我的问题好像没有你说的这么专业,你理解的太深了。现在我把我的simulink仿真模型和m文件放在附件中。麻烦你再给我看一下,谢谢!
注释:我用的是MATLAB6.5。其他的m文件都是对的,不用做任何修改,你只需要编写蓝框中的wave文件。不加wave时的输出就是前面我发的那个图片。
运行整个模型前,需要先运行table和TAB文件。
silas xue,麻烦你再帮我解决一下这个问题,急需!非常感谢!
vBulletin® v3.8.3,版权所有 ©2000-2025,Jelsoft Enterprises Ltd.