为什么我用matlab做的这个1hz信号的频谱图不对啊,fs=1024;T=1/fs;x=0:0.01:10.23;y=0.1*sin(2*pi*x);subplot(2,1,1);plot(x,y);axis([0 5 -0.1 0.1]);y1=fft(y,4096);fk=[0:4095]/4096/T;subplot(2,1,2);plot(fk,abs(y1)/max(abs(y1)));axis([0 100 0
来源:学生作业帮助网 编辑:作业帮 时间:2024/12/02 04:43:11
为什么我用matlab做的这个1hz信号的频谱图不对啊,fs=1024;T=1/fs;x=0:0.01:10.23;y=0.1*sin(2*pi*x);subplot(2,1,1);plot(x,y);axis([0 5 -0.1 0.1]);y1=fft(y,4096);fk=[0:4095]/4096/T;subplot(2,1,2);plot(fk,abs(y1)/max(abs(y1)));axis([0 100 0
为什么我用matlab做的这个1hz信号的频谱图不对啊,
fs=1024;T=1/fs;
x=0:0.01:10.23;
y=0.1*sin(2*pi*x);
subplot(2,1,1);plot(x,y);
axis([0 5 -0.1 0.1]);
y1=fft(y,4096);
fk=[0:4095]/4096/T;
subplot(2,1,2);plot(fk,abs(y1)/max(abs(y1)));
axis([0 100 0 1])
为什么我用matlab做的这个1hz信号的频谱图不对啊,fs=1024;T=1/fs;x=0:0.01:10.23;y=0.1*sin(2*pi*x);subplot(2,1,1);plot(x,y);axis([0 5 -0.1 0.1]);y1=fft(y,4096);fk=[0:4095]/4096/T;subplot(2,1,2);plot(fk,abs(y1)/max(abs(y1)));axis([0 100 0
% 我改了下你的程序,加了注释,你能看懂的
fs=1024;T=1/fs; % 采样频率1024HZ
x=0:0.01:10.23; % 10.23个周波,这里你的采样周期是0.01,所以采样频率应该是100Hz,你设置的fs = 1024 在信号产生时没起到作用,问题出在这儿了
y=0.1*sin(2*pi*x); % 信号1HZ
subplot(2,1,1);plot(x,y);
axis([0 5 -0.1 0.1]);
% y1=fft(y,4096); % 相当于补了4096-1024个0
y1=fft(y);
% fk=[0:4095]/4096/T; % ?
fk=[0:1023]*100/1024;
subplot(2,1,2);
% plot(fk,abs(y1)/max(abs(y1))); % ?这里你除以max(abs(y1)我不太明白,应该是 *2/N (N是FFT运算的长度)
stem(fk,abs(y1)/1024*2);
axis([0 10 0 0.1])
% 说明: 由于你采样的时候没有达到整周期采样的条件,所以FFT算出来的频率和幅值有偏差,如果你将x=0:0.01:10.23; 该成 x=0:0.01:10; 就不会出现问题了,即如下程序
x=0:0.01:9.99; % 整整10个周波
y=0.1*sin(2*pi*x); % 信号1HZ
subplot(2,1,1);plot(x,y);
axis([0 5 -0.1 0.1]);
y1=fft(y);
fk=[0:999]*100/1000;
subplot(2,1,2);
stem(fk,abs(y1)/1000*2);
axis([0 10 0 0.1])