ypp207 发表于 2010-1-11 18:18

功率谱程序有错

function dx=duffing(t,x);
mu=0.168; F=0.15; w=1;
dx=;

%要调用duffing.m
=ode45('duffing',,,[]);
figure(1); Y=fft(u(:,1));%对数值解作傅立叶变换
Y(1)=[];%去掉零频分量
n=length(Y);%计算频率个数
power=abs(Y(1:n/2)).^2/(length(Y).^2);%计算功率谱
freq=100*(1:n/2)/length(Y);%计算频率,因为步长为0.01,而不是1,故乘以100
plot(freq,power,'k')
拷贝别人的程序算得,但是有错误Warning: Integer operands are required for colon operator when used as index.不知怎么回事?

[ 本帖最后由 ChaChing 于 2010-1-12 18:21 编辑 ]

ChaChing 发表于 2010-1-11 20:44

回复 楼主 ypp207 的帖子

n/2会不会不是整数?

ypp207 发表于 2010-1-12 12:25

回复 沙发 ChaChing 的帖子

呵呵,果然是,,谢谢,改成round(n/2)就不会 有错误了,这样看来这个功率谱程序是不是具有通用性?对这个不懂,指教。对时域求频域有哪些意义?

ChaChing 发表于 2010-1-12 18:24

回复 板凳 ypp207 的帖子

建议去信号处理版块逛逛, 会有收获的!
页: [1]
查看完整版本: 功率谱程序有错