2016-05-21 45 views
1

我創建了一個八度/ matlab中的信號是半正弦波(變量sin_half)和半個方波(變量square_half)和I想要對組合信號進行相位移動(變量comb_sig),因爲它是一個加入的信號。我怎樣才能做到這一點?如何計算/創建通過加入陣列創建的信號的相移

我的目標是在連接一個信號的前半部分和另一個信號的後半部分並將它們附加在一起時產生週期性信號。然後我想將這個組合信號相移,就好像它是一個信號一樣。

你可以從動畫中見(圖1)我目前擁有的是信號的sinwave半隻相從「中心」和方波半移只相轉移到「中心」代替相移整個信號在一起,(圖2)中的例子。我怎樣才能將變量comb_sig作爲一個組合信號相移,如(圖2)

Comb signal animated not periodic

Comb signal animated periodic

什麼0度和180度相移應該像下面有一個靜態圖像。figure 1的動畫中,當相位偏移180度時,方波不會將其移到另一邊,我該如何解決?

Static phase shift image 0 degree and 180 degree phase shift should look like

見下面的代碼:

Vth = 0; % Threshold 
amp = 1; % Amplitude of input/output 
freq = 1; % frequency 
for n=1:2:360 %phase shift 
    ysin = amp*sin(freq*t+(n*pi/180)); % Entire sine wave creation 
    ysquare = amp*sign(ysin - Vth); % Entire square wave creation 

    sin_half=ysin(1,1:length(ysin)/2); % 1st half of wave choosen (sine wave) 
    square_half=ysquare(end-length(ysquare)/2+1:end); % 2nd half of wave choosen a (square wave) 
    comb_sig=[sin_half,square_half]; % 1st half and 2nd half of waves combined together 

    plot(t,comb_sig) 
    axis([-.1 2.2*pi -1.5 1.5]) 
    pause(.01) 
end 

有誰知道是否有一個公式/等式/所需的步驟,這將允許我這樣做。我在想變數comb_sig需要乘以一些東西,但我不知道是什麼。

PS:我使用的是倍頻4.0,類似於matlab的

+0

在你的例子(2)中,似乎兩個信號都繪製在整個x跨度上。方波在〜x = 0,〜x = pi和〜x = 2 * pi的峯值處似乎是固定的,在這個過程中只有正弦波似乎向左移動了 – BillBokeey

+0

@BillBokeey您的右邊我有一個硬的時間與這我要做仍然鏡頭並且發佈那些到問題 –

+0

哦實際上,我認爲這是XZ計劃的3d波的一個切開的計劃,在ZY飛機的正弦波將是統一的,並且移動到XZ方案的左側,並且「方形」波在沿着Y方向移動的平面上將成方形凸起 – BillBokeey

回答

0

這裏是更新的MATLAB代碼。

amp = 1; % Amplitude of input/output 
freq = 1; % frequency 
time = 1/freq; %time 
t=0:0.001:(time-0.001); 
tHalf=t(1:size(t,2)/2); 
ysinHalf = amp*sin(2*pi*freq*(tHalf)); % First half sine wave creation 
ysquareHalf = -amp*ones(1,size(ysinHalf,2)); % Last half square wave creation 
ywave=[ysinHalf ysquareHalf]; 
for n=0:2:360 
    phaseShifted=circshift(ywave,[0 -round(n*size(ywave,2)/360)]); 
    plot(t,phaseShifted); 
    axis([0 time -(amp+0.5) (amp+0.5)]); 
    pause(.01) 
end