2014-04-13 308 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