2017-06-05 75 views
0

我想用一個遞增參數f使用Matlab生成一個信號,該信號從正弦變換到矩形。使用Matlab生成一個信號從正弦變換爲矩形

對於f = 0,信號應該是正弦,而對於f = 1,信號應該是具有相同頻率的矩形信號。爲了增加01之間的值,信號應該與矩形信號類似地增加。

不幸的是,我不知道如何使用Matlab來實現。有沒有人有一個想法如何做到這一點?

我的想法是使用矩形信號的傅里葉級數,並且 - 取決於參數f - 考慮它的不同數目的加數。

+2

的簡單方法是'X = 0:0.1:2 * PI; y = min(max(sin(x)./(1-f),-1),1)'。此外,請注意,使用傅立葉級數方法,您將獲得[Gibbs pehenomenon](https://en.wikipedia.org/wiki/Gibbs_phenomenon),因此結果永遠不會像[統一公制](https: //en.wikipedia.org/wiki/Uniform_norm)意義(即總會有非減幅的尖峯) –

+0

非常感謝!這正是我所期待的。 – Peter123

回答

1

您可以使用square生成周期爲2π的純方波。

您可以對方波和正弦波進行加權平均,作爲Luis在評論中建議的信號剪輯的替代方案。

t = 0:0.1:2*pi; 
hold on 
f = 0; % entirely sine wave 
plot(t, (square(t)*f + sin(t)*(1-f))) 
f = 0.5; % half and half 
plot(t, (square(t)*f + sin(t)*(1-f))) 
f = 1; % entirely square wave 
plot(t, (square(t)*f + sin(t)*(1-f))) 

輸出:

wave