2014-04-13 263 views
0

标题有种说这一切,它似乎直截了当,但我有困难。在Matlab中生成一个可变频率的正弦波

我想创建一个正弦波,以我输入的功率呈指数衰减。我试过了一堆不同的东西,我要么会乱成一团,要么我认为是一种声音的节奏?

乱码例如

在该实例中的阵列乘法器,从1-> 4去。当绘制cos(70000000 * t)和cos(4 * 70000000 * t)时,两个图都很好看,但下面的代码中的图看起来像噪音。

t = 1:.0000000004:1.0000004; 
multiplier = linspace(1,2,1001).^-2; 
reference_signal = cos(700000000*t.*multiplier); 
plot(reference_signal) 

节拍例http://imgur.com/E9HPLy8

t = 1:.0000000004:1.0000004; 
mult = linspace(1,3,1001); 
plot(cos(700000000*t.*mult)); 

有没有人对我怎么可能会创建一个代表一个正弦波是顺利的频率呈指数衰减的数组有什么想法?

非常感谢

+0

这似乎是从t = 1改变我的t值 :.0000000004:1.0000004; to t = 0 :.0000000004:0.0000004; 固定为我 – PumpkinPie

回答

2

我觉得你的问题是采样之一 - 你的采样频率太低,你正在试图代表信号。

我建议你通过明确地计算

freq = 7E8/(2*pi); 
t = 1 + linspace(0, 4E-7, 1001); 
multiplier = linspace(1,2,1001).^2; 
omega_t = 2*pi*freq*t.*multiplier; 
d_omega_t = diff(omega_t); 
plot(d_omega_t); 

如果d_omega_t变得比圆周率大于调试,你知道你有problem-你需要每个周期至少两点忠实地再现波形的失真(奈奎斯特定理)。这可以通过使用更高的采样频率(更多点)或更低的频率来解决。

就这样,1和4的倍数看起来不错,因为正在发生的别名是不变的 - 所以你不会注意到这是一个问题。

更新

我只是跑在上面,并没有时间变量的+1 - 它使一个很大的区别。两个相邻值之间的差是

2*pi*freq*(1 + t(n) - t(n-1)) * (mult(n) - mult(n-1)) 
2*pi*freq*(mult(n) - mult(n-1) + (t(n)-t(n-1)) * (mult(n)-mult(n-1)) 

这是一个非常大的值,因为2 * PI 频率(多(n)的-mult第(n-1))是一个非常大的值。

当你离开了+1

t = linspace(0, 4E-7, 1001); 
multiplier = linspace(1,2,1001).^-2; 

事情循规蹈矩如预期 - 剧情结束看起来像:

enter image description here

+0

+1我只是打字约取样不足 –

+0

所以我相信我在取样的2.5 GHz,我想创建应该开始在700 MHz和腐烂说300 MHz的信号评论。所以,在最坏的情况,我应该在3-4被采样更多的则波我想创建? – PumpkinPie

+0

看到我的最新答案 - 在价值增量远大于你认为因为'+ 1'你有时间变量。花了我一分钟才说服自己这是一个非常大的区别。 – Floris

2
t = 0:0.0001:2*pi; 
l = linspace(1,4,numel(t)).^2; 
s = sin(t.*l); 
figure,plot(t,fliplr(s)),axis tight 

可生产情节:

enter image description here

+0

感谢,由于某种原因,只是改变我的出发时间值好工作似乎做的伎俩我。 – PumpkinPie

+0

听到这真是太棒了! – RDizzl3