MATLAB爱好者论坛-LabFans.com

MATLAB爱好者论坛-LabFans.com (https://www.labfans.com/bbs/index.php)
-   MATLAB论坛 (https://www.labfans.com/bbs/forumdisplay.php?f=6)
-   -   [MATLAB毕业设计] 急求:MATLAB编写m文件 (https://www.labfans.com/bbs/showthread.php?t=9235)

傻帽之 2009-07-16 16:57

急求:MATLAB编写m文件
 
已知一输出波形,图形横轴为时间,纵轴输出就是m文件前输出的一系列数值。要求:当波形中第一次出现0时,0之前按原来输出,0之后的输出无论原来输出是什么全输出0。

傻帽之 2009-07-16 17:06

回复: 急求:MATLAB编写m文件
 
希望各位高手能帮忙解答一下,急需,谢谢!

wyq17008 2009-07-17 15:18

回复: 急求:MATLAB编写m文件
 
简单一个判断语句就可以了啊

silas_xue 2009-07-18 02:34

回复: 急求: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”与我进行联系
个人观点 仅供参考 多多交流 相互学习

傻帽之 2009-07-18 11:01

回复: 急求:MATLAB编写m文件
 
1 个附件
首先非常感谢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

回复: 急求: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”与我进行联系
个人观点 仅供参考 多多交流 相互学习

傻帽之 2009-07-20 10:34

回复: 急求:MATLAB编写m文件
 
可能我开始说的不太清楚,我再详细给你描述一下:我的输入是随时间变化的,除了跳变点处其他都是连续的,没法用矩阵表示。还有当前面输出第一次为0时就要求后面全部输出0,不需要知道一共几个0点,关键是找出这个跳变点,所以我感觉用find命令可能不行

傻帽之 2009-07-21 15:04

回复: 急求:MATLAB编写m文件
 
silas xue,麻烦你再帮我解决一下这个问题,急需,谢谢

silas_xue 2009-07-22 03:29

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

傻帽之 2009-07-22 16:02

回复: 急求:MATLAB编写m文件
 
1 个附件
silas xue,我的问题好像没有你说的这么专业,你理解的太深了。现在我把我的simulink仿真模型和m文件放在附件中。麻烦你再给我看一下,谢谢!
注释:我用的是MATLAB6.5。其他的m文件都是对的,不用做任何修改,你只需要编写蓝框中的wave文件。不加wave时的输出就是前面我发的那个图片。
运行整个模型前,需要先运行table和TAB文件。


所有时间均为北京时间。现在的时间是 11:03

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