訊號處理第二篇——接著談正弦訊號

少年π發表於2021-03-13

上一個章節對時限正弦訊號進行了基礎訊號分析,這一章,繼續分析其中的一些重要特性。

如何區分兩個頻率相同,初相不同的兩個訊號,如下圖所示:

 

 

 上述兩個訊號的頻率是相同的,我們對上述兩個訊號進行FFT,得到幅頻特性,如下圖所示

 

 

 上圖表明,兩者具有相同的幅頻特性,因此從幅頻特性上,無法區分這兩個訊號。但頻譜分析,除了從幅頻特性出發,還可以從相頻特性出發,我們得到兩個訊號的相頻特性曲線如下圖所示:

 

 

 

上圖結果表明,儘管兩個訊號的幅頻特性一致,但是兩個訊號的相頻特性是不同的,因此我們可以從相頻率特性上區分這兩個訊號,而且相頻特性具有奇對稱的特點。我們再來關注下頻率點對應的相位:對於初相為0的正弦訊號,10Hz的地方,相位為-90°;對於初相為pi/3的正弦訊號,10Hz的地方,相位為-30°。

因此,對於正弦訊號而言:幅頻特性中對應的峰值點的相位,實際上與訊號的初始相位有關,且等於初始相位-90°。而實際上,對於餘弦訊號的表達形式,幅頻特性峰值點對應的相位實際上就等於訊號的初始相位。

 

另外的一個問題在於:

如果一個接收訊號中,包含了兩個正弦回波訊號,那麼我們訊號的擷取時長需要為多長,才能從頻譜上將這兩個訊號區分開呢?

比如,對於訊號:

 

 

 我們的訊號持續時間Tc究竟取多長,從頻譜上才能將兩者區分開來?

我們擷取不同長度的訊號進行FFT,進行訊號頻譜分析:

1 訊號S訊號持續時長0.1s。

 

 

 對上述訊號進行FFT,得到幅頻特性如下圖:

 

 上圖結果中,零頻以上只有一個峰,實際上是兩個峰混疊在一起了,我們無法將這兩個頻率區分開。

 

2 訊號S訊號持續時長0.5s。

 

  對上述訊號進行FFT,得到幅頻特性如下圖:

 

 上圖中,零頻以上有兩個峰,可見,從頻譜上這兩個訊號可以區分。那麼,訊號持續時間取多長?,兩個訊號才能區分開呢?答案是:

 

 其中:

 

 即,訊號的持續時間與混合訊號頻率的差值有關。只有當滿足上述關係的時候,才能將兩個訊號從頻譜上區分開。

以上分析的matlab程式碼如下:

  1 %% 正弦訊號頻譜分析
  2 clear 
  3 close all
  4 clc
  5 %% signal
  6 A=1;                %幅度
  7 f=10;               %頻率
  8 w=2*pi*f;           %
  9 p=0;                %相位
 10 %取樣
 11 T=1;                %s        %觀測時間
 12 fs=20*f;            %Hz       %取樣頻率
 13 d=1/fs;             %s        %取樣間隔
 14 t0=-T/2:d:T/2;       %離散時間t
 15 s1=A*cos(w*t0+p);    %正弦訊號
 16 figure(1)
 17 plot(t0,s1);
 18 title('s=sin(20\pit)')
 19 xlabel('時間/s');
 20 ylabel('幅度');
 21 %% FFT
 22 NFFT = length(t0);
 23 FFTres  = fftshift(fft(s1,NFFT));
 24 FFTAmu = abs(FFTres);
 25 ft=(-NFFT/2:NFFT/2-1)*fs/NFFT; %頻率序列
 26 % 求幅頻曲線
 27 figure(2)
 28 plot(ft,FFTAmu)
 29 title('s=sin(20\pit)')
 30 xlabel('頻率/Hz');
 31 ylabel('幅度');
 32 % 求幅相曲線
 33 FFT_phase = angle(FFTres)*180/pi;
 34 figure(3)
 35 plot(ft,FFT_phase)
 36 title('s=sin(20\pit)')
 37 xlabel('頻率/Hz');
 38 ylabel('相位/角度制');
 39 %% 變換訊號的初相
 40 %% signal1
 41 A=1;                %幅度
 42 f=10;               %頻率
 43 w=2*pi*f;           %
 44 p=pi/3;                %相位
 45 %取樣
 46 T=1;                %s        %觀測時間
 47 fs=20*f;            %Hz       %取樣頻率
 48 d=1/fs;             %s        %取樣間隔
 49 t0=-T/2:d:T/2;       %離散時間t
 50 s1=A*cos(w*t0+p);    %正弦訊號
 51 figure(4)
 52 plot(t0,s1);
 53 title('s=sin(20\pit+\pi/3)')
 54 xlabel('時間/s');
 55 ylabel('幅度');
 56 %% FFT
 57 NFFT = length(t0);
 58 FFTres  = fftshift(fft(s1,NFFT));
 59 FFTAmu = abs(FFTres);
 60 ft=(-NFFT/2:NFFT/2-1)*fs/NFFT; %頻率序列
 61 
 62 % 求幅頻曲線
 63 figure(5)
 64 plot(ft,FFTAmu)
 65 title('s=sin(20\pit+\pi/3)')
 66 xlabel('頻率/Hz');
 67 ylabel('幅度');
 68 % 求幅相曲線
 69 FFT_phase = angle(FFTres)*180/pi;
 70 figure(6)
 71 plot(ft,FFT_phase)
 72 title('s=sin(20\pit+\pi/3)')
 73 xlabel('頻率/Hz');
 74 ylabel('相位');
 75 
 76 %% 將兩個訊號區分開來持續時長
 77 %% 處理接收兩路的回波訊號
 78 A=1;                %幅度
 79 f1=10;              %頻率
 80 f2=15;
 81 w1=2*pi*f1;     
 82 w2=2*pi*f2;        
 83 p=0;
 84 %取樣
 85 Tc=1/10;                %s        %觀測時間
 86 fs=20*f2;            %Hz       %取樣頻率
 87 d=1/fs;             %s        %取樣間隔
 88 t0=-Tc/2:d:Tc/2;       %離散時間t
 89 s1=A*cos(w1*t0+p)+A*cos(w2*t0+p);    %正弦訊號
 90 figure(7)
 91 plot(t0,s1);
 92 title('s=sin(20\pit)+s=sin(30\pit)')
 93 xlabel('時間/s');
 94 ylabel('幅度');
 95 
 96 % 觀察時長為1/10s
 97 FFTres  = fftshift(fft(s1,NFFT));
 98 FFTAmu = abs(FFTres);
 99 ft=(-NFFT/2:NFFT/2-1)*fs/NFFT; %頻率序列
100 figure(8)
101 plot(ft,FFTAmu)
102 title('訊號觀測時長T =1/10s')
103 
104 %觀測時長為1/2s
105 Tc=1/2;                %s        %觀測時間
106 fs=20*f2;            %Hz       %取樣頻率
107 d=1/fs;             %s        %取樣間隔
108 t0=-Tc/2:d:Tc/2;       %離散時間t
109 s1=A*cos(w1*t0+p)+A*cos(w2*t0+p);    %正弦訊號
110 
111 figure(9)
112 plot(t0,s1);
113 title('s=sin(20\pit)+s=sin(30\pit)')
114 xlabel('時間/s');
115 ylabel('幅度');
116 
117 FFTres  = fftshift(fft(s1,NFFT));
118 FFTAmu = abs(FFTres);
119 ft=(-NFFT/2:NFFT/2-1)*fs/NFFT; %頻率序列
120 
121 figure(10)
122 plot(ft,FFTAmu)
123 title('訊號觀測時長T =1/2s')
124 %% 對比正弦訊號頻譜和指數訊號頻譜

 

相關文章