信号频谱MATLAB语法

时间:2014-11-19 13:32:49

标签: matlab signals spectrum

我对MATLAB及其语法有一点问题。我试图绘制有关AM调制信号的频谱。

在我的情况下,AM调制定义为:

y(t)=[1+m*x(t)]*cos(2*pi*fc*t),其中fc = 100 kHz且m = 0.5

在部分中打破y(t):

y(t)=cos(2*pi*fc*t)+m*x(t)*cos(2*pi*fc*t)

现在x(t)是余弦波,幅度为1,频率范围为fx = [0-5000Hz]。所以y(t)可以写成:

y(t)=cos(2*pi*fc*t)+m*cos(2*pi*fx*t)*cos(2*pi*fc*t)

使用三角恒等式,我们可以将y(t)写成:

cos(x)cos(y)=1/2(cos(x-y)+cos(x+y))

y(t)=cos(2*pi*fc*t)+m/2*cos(2*pi*t(fc-fx))+m/2*cos(2*pi*t(fc+fx))

现在当fx = [0,5000Hz]时,y(t)可以写成这些谐波的总和:

y(t)=cos(2*pi*fc*t)+m/2*cos(2*pi*t(fc-0))+m/2*cos(2*pi*t(fc+0))+m/2*cos(2*pi*t(fc-1))+m/2*cos(2*pi*t(fc+1))... + m/2*cos(2*pi*t(fc-5000))+m/2*cos(2*pi*t(fc+5000))

现在在MATLAB中写下这一切:

clear all;
fc=100000; //base frequency
Fs=250000; //sampling rate should be Fs>2fc according to Nyquist criterion
Ts=1/Fs;
m=0.5;
t = 0:Ts:1-Ts;
fx= 0:1:5000;
yt=cos(2*pi*fc*t)+m*0.5*cos(2*pi*t(fc-fx))+m*0.5*cos(2*pi*t(fc+fx)) // this is where all goes wrong
plot(abs(fft(yt))); // I don't know if this is the correct way to plot it.

程序总是说yt中有一个错误,它抱怨矩阵尺寸应该同意。我真的不知道如何解决这个舞会,所以任何帮助或建议都非常感激。

1 个答案:

答案 0 :(得分:0)

原因是因为t的尺寸与fx的尺寸不匹配。您需要确保tfx的两个维度都匹配。因此,请尝试将fx更改为此以确保两个数组的大小相同:

fx = 0:(numel(t)-1);