24小时热门版块排行榜    

CyRhmU.jpeg
查看: 834  |  回复: 6

brqhl_ing

银虫 (小有名气)

[交流] 【求助】关于matlab循环

目前问题是这样的:
阶微分方程组得到一组数据(2500个时间单位) 现取其中一组例如x的序列进行hilbert变换得到数据(定义相位) 现在想把得到的数据有一个判断:当后一个时刻的值比前一个时刻的值大的时候,我们定义的相位+2pi   请问这个循环怎么写!!
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lijinfeng042

木虫 (小有名气)

Matlab

★ ★
ctgu_zheng(金币+1):鼓励继续交流应助。。。 2010-10-07 20:25:16
hiqun(金币+1):感谢应助 2010-10-08 11:53:49
取diff >0的用2pi取代 加回原数组
工作了,偶尔会上来~可以关注新浪微博 @云是风的梦_Matlab
2楼2010-10-07 12:30:00
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

brqhl_ing

银虫 (小有名气)

引用回帖:
Originally posted by lijinfeng042 at 2010-10-07 12:30:00:
取diff >0的用2pi取代 加回原数组

下面是我写的程序,如何修改?
function rosslertest2()
clc;
clear all;
tic;
[T,x]=ode45(@Rossler,[0,2000],[0.2;0.3;0.6;0.4;0.7;0.1]);
y1=x(:,1);
m1=hilbert(y1);
N=length(m1);
n1=imag(m1);
l1=real(m1);
p1=atan2(n1,l1);
p2=p1;
dy1=0;

for i=2:N;
     if    p1(i)          dy1=dy1+2*pi;
     end
         p2(i)=p2(i)+dy1;
   
end

y2=x(:,4);
m2=hilbert(y2);
M=length(m2);
n2=imag(m2);
l2=real(m2);
p3=atan2(n2,l2);
p4=p3;
dy2=0;

  for i=2:M;
     if    p3(i)          dy2=dy2+2*pi;
     end
         p4(i)=p4(i)+dy2;
      
  end
  p5=abs(p4-p2);
  plot(p5)
toc;
function dx = Rossler(t,x)
dx1=-(1+0.015)*x(2)-x(3)+0.01*(x(4)-x(1));
dx2=(1+0.015)*x(1)+0.15*x(2);
dx3=0.2+x(3)*(x(1)-10);
dx4=-(1-0.015)*x(5)-x(6)+0.01*(x(1)-x(4));
dx5=(1-0.015)*x(4)+0.15*x(5);
dx6=0.2+x(6)*(x(4)-10);
dx=[dx1;dx2;dx3;dx4;dx5;dx6];
3楼2010-10-07 19:50:01
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lijinfeng042

木虫 (小有名气)

Matlab


hiqun(金币+1):感谢应助 2010-10-08 09:36:13
引用回帖:
Originally posted by brqhl_ing at 2010-10-07 19:50:01:

下面是我写的程序,如何修改?
function rosslertest2()
clc;
clear all;
tic;
[T,x]=ode45(@Rossler,[0,2000],[0.2;0.3;0.6;0.4;0.7;0.1]);
y1=x(:,1);
m1=hilbert(y1);
N=length(m1);
n1=imag(m ...

不理解你的意思 你是要实时的改变相位还是求出结果统一加?
工作了,偶尔会上来~可以关注新浪微博 @云是风的梦_Matlab
4楼2010-10-08 09:23:18
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

brqhl_ing

银虫 (小有名气)

引用回帖:
Originally posted by lijinfeng042 at 2010-10-08 09:23:18:

不理解你的意思 你是要实时的改变相位还是求出结果统一加?

我的意思是分别定义出两个相位(瞬时),然后做相位差。画出相位差的图。hilbert变换后相位u一直都在-pi到pi之间变化。但相位应该是随时间增长的 p1和p3做出来的都是从-pi增加到pi然后又突然落到-pi这么个状态。现在想消除这个落差。把他们弄到一条线上。你可以先画出p1p3的图看一下
5楼2010-10-08 09:54:37
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lijinfeng042

木虫 (小有名气)

Matlab


ctgu_zheng(金币+1):欢迎继续交流讨论 2010-10-09 23:42:37
不是很理解 相位 呵呵
    if    p3(i)          dy2=dy2+2*pi;
     end
         p4(i)=p4(i)+dy2;
      
  end
通过这个来?
工作了,偶尔会上来~可以关注新浪微博 @云是风的梦_Matlab
6楼2010-10-09 18:12:40
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

brqhl_ing

银虫 (小有名气)

引用回帖:
Originally posted by lijinfeng042 at 2010-10-09 18:12:40:
不是很理解 相位 呵呵
    if    p3(i)          dy2=dy2+2*pi;
     end
         p4(i)=p4(i)+dy2;
      
  end
通过这个来?

是通过这个来的啊。matlab能做做一些大的循环?
7楼2010-10-11 08:42:59
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 brqhl_ing 的主题更新
普通表情 高级回复(可上传附件)
信息提示
请填处理意见