1. 程式人生 > 其它 >【模擬訊號】基於matlab調相訊號產生+解調【含Matlab原始碼 987期】

【模擬訊號】基於matlab調相訊號產生+解調【含Matlab原始碼 987期】

一、簡介

相位調製,或稱調相:載波的相位對其參考相位的偏離值隨調製訊號的瞬時值成比例變化的調製方式相。
調相和調頻有密切的關係。調相時,同時有調頻伴隨發生;調頻時,也同時有調相伴隨發生,不過兩者的變化規律不同。
實際使用時很少採用調相制,它主要是用來作為得到調頻的一種方法。

二、原始碼

%主程式
t0=1;                           %訊號的持續時間,用來定義時間向量
ts=0.001;                                              %抽樣間隔
fs=1/ts;                                        %抽樣頻率
fc=100;                                 %載波頻率,fc可以任意改變
t=[-t0/2:ts:t0/2];                                     %時間向量
kf=100;                                                %偏差常數
df=0.25;       
%所需的頻率解析度,用在求傅立葉變換時,它表示FFT的最小頻率間隔
m=cos(pi*10*t);                       %調製訊號,m(t)可以任意更改
int_m(1)=0;                                    %求訊號m(t)的積分
for i=1:length(t)-1  
    int_m(i+1)=int_m(i)+m(i)*ts;
end
[M,m,df1]=fftseq(m,ts,df);           %對調製訊號m(t)求傅立葉變換
M=M/fs;                            %縮放,便於在頻譜圖上整體觀察
f=[0:df1:df1*(length(m)-1)]-fs/2;        %時間向量對應的頻率向量
u=cos(2*pi*fc*t+2*pi*kf*int_m);                    %調製後的訊號
[U,u,df1]=fftseq(u,ts,df);          %對調製後的訊號u求傅立葉變換
U=U/fs;                                                    %縮放
%通過呼叫子程式env_phas和loweq來實現解調功能
[v,phase]=env_phas(u,ts,fc);                %解調,求出u的相位
phi=unwrap(phase);   %校正相位角,使相位在整體上連續,便於後面對該相位角求導dem=(1/(2*pi*kf))*(diff(phi)*fs);       %對校正後的相位求導 %再經一些線性變換來恢復原調製訊號 %乘以fs是為了恢復原訊號,因為前面使用了縮放 
subplot(2,2,1)                           %子圖形式顯示結果

%求訊號相角的子函式,這是調頻、調相都要用到的方法
function [v,phi]=env_phas(x,ts,f0)
if nargout==2                          %nargout為輸出變數的個數
   z=loweq(x,ts,f0);                     %產生調製訊號的正交分量
    phi=angle(z);                 %angle是對一個複數求相角的函式
end
v=abs(hilbert(x));                %abs用來求複數hilbert(x)的模

三、執行結果

四、備註

版本:2014a
完整程式碼或代寫加1564658423