matlab怎样画出方波的频谱图?

来源:百度知道 编辑:UC知道 时间:2024/05/25 16:36:05
就是那种若干条代表基波和各次谐波幅值的直线段。
我用以下代码,画出的频谱是幅值逐渐减小的尖脉冲形状,不是直线呀!
f0=1;
t = 0:.0001:5;
w0=2*pi*f0;
y = square(w0*t, 50);
fy=fft(y);
subplot(211)
plot(t,y); axis([0,5,-1.5,1.5]);
subplot(212)
f=1:100;
plot(f,abs(fy(1:100)))

如果把fy=fft(y);换成fy=fourier(y);
就提示没有fourier函数,是不是我的matlab缺东西,或者应该在程序前加include?

Matlab里是有fourier函数的,不过是对一个函数进行傅氏变换。
如下例:
ft=sym('(t+4)/2*Heaviside(t+4)-t*Heaviside(t)+(t-4)/2*Heaviside(t-4)');
Fw=simplify(fourier(ft));
Ff=subs(Fw, '2*pi*f', 'w');
Ff_conj=conj(Ff);
GF=sqrt(Ff*Ff_conj);
ezplot(GF,[-0.5 0.5]);grid;

这个例子也是我在网上找到的,可以作为参考。

如果用离散变换可能要设采样点什么的,搜索一下matlab频谱分析可能会找到一些实例。

只有快速的fft,没有傅立叶变换,因为matlab上本身就是离散点。
不存在直线的冲击函数~