我对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中有一个错误,它抱怨矩阵尺寸应该同意。我真的不知道如何解决这个舞会,所以任何帮助或建议都非常感激。
答案 0 :(得分:0)
原因是因为t
的尺寸与fx
的尺寸不匹配。您需要确保t
和fx
的两个维度都匹配。因此,请尝试将fx
更改为此以确保两个数组的大小相同:
fx = 0:(numel(t)-1);