信号频谱 MATLAB 语法
Posted
技术标签:
【中文标题】信号频谱 MATLAB 语法【英文标题】:Signal Spectrum MATLAB Syntax 【发布时间】:2014-11-19 13:32:48 【问题描述】:我有一点关于 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 有错误,它抱怨矩阵维度应该一致。我真的不知道如何解决这个舞会,所以非常感谢任何帮助或建议。
【问题讨论】:
没有使用ammod函数的具体原因是什么? 在你提到之前不知道有一个函数ammod,我得研究一下。 【参考方案1】:原因是t
的尺寸和fx
的尺寸不匹配。您需要确保t
和fx
的尺寸都匹配。因此,请尝试将fx
更改为此,以确保两个数组大小相同:
fx = 0:(numel(t)-1);
【讨论】:
以上是关于信号频谱 MATLAB 语法的主要内容,如果未能解决你的问题,请参考以下文章