作业帮 > 综合 > 作业

matlab函数ode45出错,如果能调好整个完整程序,愿意加100分

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/07/18 05:47:06
matlab函数ode45出错,如果能调好整个完整程序,愿意加100分
w=1;fc=0.73359525;
T=2*pi/w;%线性系统的周期或激励的周期
step=T/100;%定义步长为T/100
y0=[0;0];
tspan=[0:step:100*T];%定义时间范围
[t,y]=ode45(@duffing,tspan,y0);这儿老是出错
需要解的方程式
k=0.5;w=1;
f1=x(2);
f2=x(1)^3-x(1)^5-k*x(2)+fc*cos(w*t)+zs;%zs为色噪声
dy=[f1;f2];
出错报Size vector should be a row vector with integer elements.
zs是多少?
再问: T = 2;%调用函数的时候改成100*T; fs = 1000; noise1 = randn(1,fs*T); N = 6;%滤波器的阶数 wn = [0.2,0.4];%截止频率 [b,a] = butter(N,wn); zs = filter(b,a,noise1);
再答: 初步估计是错在zs上了,这样编zs是一个1*2000的向量,而m文件里f2后面只能加标量(一个数值)
再问: 那怎么解决
再答: 现在是你编的方法是什么我不知道,要加zs必需是一个量,你产生2000个数的计算原理是什么?
再问: 用randn函数产生一个高斯白噪声,通过滤波器产生色噪声
再答: 不用qq,改了一下,能够使用的前提是zs是一个数 m文件:function dy=duffing(t,x)noise1=randn(1,1);N=6;   %滤波器的阶数wn=[0.2,0.4];    %截止频率[b,a]=butter(N,wn);zs=filter(b,a,noise1);k=0.5;w=1;fc=0.73359525;f1=x(2);f2=x(1)^3-x(1)^5-k*x(2)+fc*cos(w*t)+zs;%zs为色噪声dy=[f1;f2]; 输入:clearw=1;T=2*pi/w;    %线性系统的周期或激励的周期 step=T/100;  %定义步长为T/100 y0=[0,0]; tspan=[0:step:100*T];    %定义时间范围 [t,y]=ode45(@duffing,tspan,y0);plot(t,y(:,1))plot(t,y(:,2))plot(y(:,1),y(:,2)) t-y(1)图像t-y(2)图像y(1)-y(2)图像 你可以把原理讲一下
再问: 是关于色噪声背景下微弱正弦信号的duffing振子混沌检测,那个fc是内置信号,系统会出现混沌,周期态,这些我都做好了。主要是开始把系统放到色噪声背景就不行了,你说的那个zs为向量好像是的,有啥子可以改一下zs能计算