永发信息网

Matlab关于信号频域分析

答案:2  悬赏:20  手机版
解决时间 2021-03-09 21:46
  • 提问者网友:藍了天白赴美
  • 2021-03-09 13:32
同样的程序,在学校的Matlab6.0可以画出所有图像,而在Matlab7.6中画不出振幅和相位。(注:Matlab6.0中没有heaviside函数,我添加了。在Matlab7.6中含有heaviside函数,这个函数应用是正确的。)
clear
clc
T=0.02;
t=-10:T:10;
N=200;
W=4*pi;
k=-N:N;
w=k*W/N;
f1=heaviside(t+1)-heaviside(t-1);%f(t)
F=T*f1*exp(-j*t'*w);%f(t)的傅里叶变换
F1=abs(F);
P1=angle(F);
subplot(3, 1, 1); plot(t, f1);
axis([-3, 3, -0.1, 1.2]);
ylabel('f(t)');
xlabel('t'); title('f(t)'); grid
subplot(3, 1, 2);plot(w, F1);
axis([-3*pi,3*pi,-0.01,2.1]);
grid; ylabel('振幅');
subplot(3, 1, 3); plot(w, P1*180/pi);
grid; axis([-3*pi,3*pi,-200,200]);
xlabel('w'); ylabel('相位(度)');
请问解决方法~谢谢了~
最佳答案
  • 五星知识达人网友:独行浪子会拥风
  • 2021-03-09 14:13
F=T*f1*exp(-j*t'*w);%f(t)的傅里叶变换
可以使用fft函数。

自带的频谱分析例子:

t = 0:0.001:0.6;
x = sin(2*pi*50*t)+sin(2*pi*120*t);
y = x + 2*randn(size(t));
plot(1000*t(1:50),y(1:50))
title('Signal Corrupted with Zero-Mean Random Noise')
xlabel('time (milliseconds)')

Y = fft(y,512);

Pyy = Y.* conj(Y) / 512;

f = 1000*(0:256)/512;
plot(f,Pyy(1:257))
title('Frequency content of y')
xlabel('frequency (Hz)')
全部回答
  • 1楼网友:独钓一江月
  • 2021-03-09 15:47
下面函数恐怕是matlab中查看wav的唯一方式了
[y,fs]=wavread('filenam.wav');%将波形文件下载到matlab空间中
n=length(y);%文件长度
t=(0:n-1)/fs;%时间长度
plot(t,y)%时域图
f=fs*(0:n-1)/n;
figure
plot(f,abs(fft(y))*2/n)%振幅谱
xlim([0,f(end)/2])
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯