anny 发表于 2007-8-30 13:01

求助:chirp-z在matlab上的编程问题

求助:
    我在对电力系统谐波信号进行检测时,采用了频率域插值小波变换法,在MATLAB上,我用CZT命令编程,可结果就是不尽人意,望各位高手多多指教,感激不尽!
这是我选用的谐波信号:x=0.3*cos(2*pi*f1*t+70)+0.7*cos(2*pi*f2*t+80)+1.0*cos(2*pi*f3*t)+0.5*cos(2*pi*f4*t+90)+0.4*cos(2*pi*f5*t+40);
以下是我的程序:
fs=100;
N=1024;
f1=25,f2=35.85,f3=50,f4=86.6,f5=150;
m=0:N-1;
t=m/fs;
x=0.3*cos(2*pi*f1*t+70)+0.7*cos(2*pi*f2*t+80)+1.0*cos(2*pi*f3*t)+0.5*cos(2*pi*f4*t+90)+0.4*cos(2*pi*f5*t+40);
w=exp(-j*2*pi*200/(N*fs));
a=1;
z=czt(x,N,w,a);
fz=(0:length(z)-1)'*200/length(z);
plot(fz,abs(z));axis();
得出的图形就是无法测到谐波的频率,希望各位能给我指点迷经,感激不尽!


wuyaping1007@yahoo.com.cn

songzy41 发表于 2007-8-30 15:05

怎么会忘了满足采样定理?信号中最高频率为150,而fs=100。
把程序修改如下:
fs=500;
N=1024;
f1=25,f2=35.85,f3=50,f4=86.6,f5=150;
m=0:N-1;
t=m/fs;
x=0.3*cos(2*pi*f1*t+70)+0.7*cos(2*pi*f2*t+80)+1.0*cos(2*pi*f3*t)+0.5*cos(2*pi*f4*t+90)+0.4*cos(2*pi*f5*t+40);
w=exp(-j*2*pi*200/(N*fs));
a=1;
z=czt(x,N,w,a);
fz=(0:length(z)-1)'*200/length(z);
plot(fz,abs(z)*2/N);
axis(); grid;
得图:

anny 发表于 2007-9-2 15:32

:handshake, thank you!
   呵呵,谢谢您!
    我在信号处理方面是个新手,但我的研究方向是这方面的,以后一定更加努力!

caichengtao 发表于 2007-9-2 19:09



axis();

修改为:axis auto
也会对程序错误发现有启发作用!

xiaodinger 发表于 2007-9-19 21:21

请问上述程序中,如何求出经过czt后的频率测量值,和其对应的谱线位置呢?
页: [1]
查看完整版本: 求助:chirp-z在matlab上的编程问题