24小时热门版块排行榜    

查看: 3826  |  回复: 12

tang-bo001

木虫 (正式写手)

[求助] 如何用matlab软件或者用C及C++自己手工编程寻找转折点

如何用matlab软件或者用C及C++自己手工编程寻找转折点:
我的标准输入信号是矩形脉冲,输出波形由于系统非线性,存在延迟,想找到输入输出曲线的延迟时间,输出曲线数据点在附加中,输入输出的图也在附件中,不知能否用matlab可以自动处理数据点,找到那个上升拐点跟矩形脉冲的起点的差值。
回复此楼

» 本帖附件资源列表

  • 欢迎监督和反馈:小木虫仅提供交流平台,不对该内容负责。
    本内容由用户自主发布,如果其内容涉及到知识产权问题,其责任在于用户本人,如对版权有异议,请联系邮箱:xiaomuchong@tal.com
  • 附件 1 : 2hezi3t.csv
  • 2011-12-12 20:56:31, 177.18 K

» 本帖已获得的红花(最新10朵)

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
回帖支持 ( 显示支持度最高的前 50 名 )

dbb627

荣誉版主 (著名写手)

【答案】应助回帖

★ ★
臭水沟(金币+2): 谢谢交流~~ 2011-12-13 14:56:48
ben_ladeng(专家考核): 2011-12-29 17:18:47
引用回帖:
4楼: Originally posted by tang-bo001 at 2011-12-13 08:40:26:
挺好的,你能否帮你详细说明一下,数据是如何导入maltab中的,延迟相应的t值减下如此操作,我没有处理过这方面的东西,matlab刚入门,有些功能还不熟悉,请多指教。谢谢

matlab file菜单-->import data---选择你的csv文件 导入即可
延迟相应的t值减,这个看你的延迟怎么定义,由于是矩形脉冲,下降起点和终点差不多。去掉最后的-一组值,让两列信号标记点长度一致
CODE:
t=data(:,1);x=data(:,2);y=data(:,4);
bx=find(diff(sign(diff(x)))>0)+1;
by=find(diff(sign(diff(y)))<0)+1;
bb=find(abs(diff(x(bx)))>4);
figure;
plot(t,x,t,y,'g-',t(bx(bb)),x(bx(bb)),'r*',t(by),y(by),'ro')
dt=t(by)-t(bx(bb(1:end-1)))%延迟时间
dtm=mean(dt)%平均延迟时间

The more you learn, the more you know, the more you know, and the more you forget. The more you forget, the less you know. So why bother to learn.
5楼2011-12-13 09:00:40
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

tang-bo001

木虫 (正式写手)

引用回帖:
: Originally posted by dbb627 at 2011-12-29 17:08:08:
这个也可以求,代码稍作修改就可以了
[code]
t=data(:,1);x=data(:,2);y=data(:,4);
bx=find(diff(sign(diff(x)))>0)+1;
by=find(diff(sign(diff(y)))<0)+1;
bb=find(abs(diff(x(bx)))>4);
figur ...

t=data(:,1);x=data(:,2);y=data(:,4);
bx=find(diff(sign(diff(x)))>0)+1;
by=find(diff(sign(diff(y)))<0)+1;
bb=find(abs(diff(x(bx)))>4);
figure;
plot(t,x,t,y,'g-',t(bx(bb)),x(bx(bb)),'r*',t(by),y(by),'ro')
这样的操作也能达到找到最大值点的,还有下面一个拐点不知道是如何求出的,蓝色曲线0位置附近另外一个端点的时间坐标如何求出,我是通过最小点发求得,不知合理否。
z=[t,x];
[m1,n1]=find(z==max(z(:,2)));
d=z(m1, %求最大值点
10楼2011-12-30 08:38:00
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通回帖

dbb627

荣誉版主 (著名写手)

【答案】应助回帖


感谢参与,应助指数 +1
xiegangmai(金币+1): 谢谢应助! 2011-12-12 22:48:55
ben_ladeng(专家考核): 2011-12-29 17:18:35
tang-bo001(金币+20): ★★★★★最佳答案 2011-12-31 08:31:42
这个是可以的,这些点找出来了,延迟你用相应的t值减下
CODE:
t=data(:,1);x=data(:,2);y=data(:,4);
bx=find(diff(sign(diff(x)))>0)+1;
by=find(diff(sign(diff(y)))<0)+1;
bb=find(abs(diff(x(bx)))>4);
figure;
plot(t,x,t,y,'g-',t(bx(bb)),x(bx(bb)),'r*',t(by),y(by),'ro')

The more you learn, the more you know, the more you know, and the more you forget. The more you forget, the less you know. So why bother to learn.
2楼2011-12-12 21:42:54
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

dbb627

荣誉版主 (著名写手)

【答案】应助回帖


xiegangmai(金币+1): 辛苦了! 2011-12-12 22:49:06
ben_ladeng(专家考核): 2011-12-29 17:18:41
data就是你的数据
图形如下


The more you learn, the more you know, the more you know, and the more you forget. The more you forget, the less you know. So why bother to learn.
3楼2011-12-12 21:44:06
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

tang-bo001

木虫 (正式写手)

挺好的,你能否帮你详细说明一下,数据是如何导入maltab中的,延迟相应的t值减下如此操作,我没有处理过这方面的东西,matlab刚入门,有些功能还不熟悉,请多指教。谢谢
4楼2011-12-13 08:40:26
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

tang-bo001

木虫 (正式写手)

臭水沟: 请使用“引用回复”,否则对方看不到你的回复~ 2011-12-13 14:56:14
我装的matlab是R2011b,这样导入运行代码的时候说我没有定义变量。我参照论坛中的方法,数据能导入,导入后展现的形式不一样,我在仔细研究一下,谢谢你的指导。http://muchong.com/bbs/viewthread.php?tid=2557107
6楼2011-12-13 09:08:47
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

tang-bo001

木虫 (正式写手)

引用回帖:
4楼: Originally posted by tang-bo001 at 2011-12-13 08:40:26:
挺好的,你能否帮你详细说明一下,数据是如何导入maltab中的,延迟相应的t值减下如此操作,我没有处理过这方面的东西,matlab刚入门,有些功能还不熟悉,请多指教。谢谢

你好,我想知道离散曲线,不是脉冲曲线的那条曲线即起伏变化的那条曲线在x坐标为0附近,上升阶段的点已经求出,那么下降阶段的点是否也能求出,如何求,谢谢。
7楼2011-12-29 10:40:18
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

dbb627

荣誉版主 (著名写手)

【答案】应助回帖

★ ★
ben_ladeng(专家考核): 2011-12-29 17:19:40
xiegangmai(金币+2): 谢谢应助! 2011-12-29 22:15:29
引用回帖:
7楼: Originally posted by tang-bo001 at 2011-12-29 10:40:18:
你好,我想知道离散曲线,不是脉冲曲线的那条曲线即起伏变化的那条曲线在x坐标为0附近,上升阶段的点已经求出,那么下降阶段的点是否也能求出,如何求,谢谢。

这个也可以求,代码稍作修改就可以了
CODE:
t=data(:,1);x=data(:,2);y=data(:,4);
bx=find(diff(sign(diff(x)))>0)+1;
by=find(diff(sign(diff(y)))<0)+1;
bb=find(abs(diff(x(bx)))>4);
figure;
plot(t,x,t,y,'g-',t(bx(bb)),x(bx(bb)),'r*',t(by),y(by),'ro')
bx1=find(diff(sign(diff(x)))<0)+1;
hold on;
bb1=find((x(bx1))>5.1);
plot(t(bx1(bb1)),x(bx1(bb1)),'rp')



The more you learn, the more you know, the more you know, and the more you forget. The more you forget, the less you know. So why bother to learn.
8楼2011-12-29 17:08:08
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

tang-bo001

木虫 (正式写手)

送鲜花一朵
非常感谢。
9楼2011-12-30 08:29:45
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 tang-bo001 的主题更新
信息提示
请填处理意见