如何在matlab中绘制这个简单的函数?

时间:2013-12-27 19:43:43

标签: matlab plot

这是一个非常简单的问题,但我不知道我做错了什么。 这是一个函数,我想绘制它, 采样率1KHz超过t=[0,1] 功能是: enter image description here
它必须像我在论文中看到的那样 enter image description here

这是我尝试过的:

t=0:1:1000;
sig =exp(-(t-400).^2/2).*cos(2*pi*(t-400)/10)...
     +exp(-(t-425).^2/2).*cos(2*pi*(t-425)/15)...
     +exp(-(t-440).^2/2).*cos(2*pi*(t-440)/10);
 plot(t./1000,sig)

它给了我以下情节: enter image description here
这是一个非常简单的问题,但我很困惑。

1 个答案:

答案 0 :(得分:2)

仔细看看这个功能。你有一些看起来像高斯的东西,例如

exp(-(t-400).^2/2)

乘以余弦波。不幸的是,你没有在高斯内部的许多点评估你的函数 - 函数太窄(sigma = 1)。你的情节是正确的;为了正确看待事物,你需要有正确的比例(高斯的宽度和余弦函数的频率)。随着一点点摆弄,我得到了以下(这是我的第一个答案的更新):

t=linspace(0, 1000, 1000);
sig =exp(-(t-400).^2/200).*cos(2*pi*(t-400)/10)...
     +exp(-(t-425).^2/200).*cos(2*pi*(t-425)/15)...
     +exp(-(t-440).^2/200).*cos(2*pi*(t-440)/10);
 plot(t./1000,sig)

导致了

enter image description here

显然,比例存在问题 - 一旦sigma大10倍(因此sigma ^ 2大100倍),它按预期工作。

在我看来,就像原始论文中的拼写错误......

顺便说一句,我发现通常你想要“完全按照你的意愿”写出来 - 所以如果你想用毫秒来计算时间,那么使用频率为kHz;并记住,在高斯中,你在分母中有2*sigma^2