matlab中對數字信號調製解調的操作(1)

今年剛剛加入到哈爾濱工程大學開始自己的研究生生涯,雖然今年還是研一,上課任務比較重,不過還是求到了自己的mxff師兄(不想喊他師兄...)先給自己一些任務好不讓自己閒着,他給我佈置的任務是用matlab完成數字信號的調製和解調,現在先將調製部分寫下,等到明天繼續完成解調部分的編寫.

數字信號的調製

數字信號的調製方式主要有2ask,2fsk,2psk.先介紹下2ask信號的調製方式原理

2ask利用在載波的幅度變化來傳遞數字信息,頻率和相位保持不變的一種數字調製方式,一般來說,其信號可表示爲

e(t)=s(t)COS wc t。s(t)爲概率爲p時的高度爲1的矩形波信號,概率爲1-p的空信號。

%設置餘弦函數wc爲0.5,數字信號數列爲10100010
t=0:2*pi/99:2*pi;
m1=[];
c1=[];
s=[1 0 1 0 0 0 1 0]
f=2;
%a=ones(1,10);
%t爲0-2pi的連續取值,m1取空數組以方便接一下進行嵌套操作,c1亦是如此,s爲要傳輸的離散數字信號,f爲載波角頻率
for n=1:length(s)
    if s(n)==0;
        m=zeros(1,100);
    else  s(n)==1;
        m=ones(1,100);
    end
        m1=[m1 m];
        c=sin(t*f);
        c1=[c1 c];
end
subplot(211);
plot(m1);
axis([0 100*length(s) -0.1 1.1]);
ask=m1.*c1;
subplot(212);
plot(ask);
axis([0 100*length(s) -1.1 1.1]);
%FFT_Data = fft(ask);

總的來說就是將離散數字信號和連續的餘弦載波點乘,從而得到振幅大小隨載波控制的2ASK信號

對於2ask信號的解調來說,主要分爲相干解調和非相干解調兩種,主要說一下相干解調,首先在時域上,調製後的信號與同頻同相的載波信號相乘,得到的信號進行快速傅里葉變換,之後得到頻域信號通過低通濾波器得到低頻信號

function [f,sf]=FFT2(t,st)
%傅里葉變換函數,將確定時間的時域函數變換成確定頻率範圍的頻域函數
dt=t(2)-t(1);
T=t(end);
df=1/T;
N=length(st);
f=-2/N*df:df:2/N*df-df;
sf=fft(st);
sf=T/N*fftshift(sf);
function [t,st]=lpf(f,sf,B)
%This function filter an input data using a lowpass filter
%Inputs: f: frequency samples
%低通濾波函數
% sf: input data spectrum samples
% B: lowpass bandwidth with a rectangle lowpass
%Outputs: t: time samples
% st: output data time samples
df = f(2)-f(1);
T = 1/df;
hf = zeros(1,length(f));%全零矩陣
bf = [-floor( B/df ): floor( B/df )] + floor( length(f)/2 );
hf(bf)=1;
yf=hf.*sf;
[t,st]=F2T(f,yf);
st = real(st);

F2T函數是頻域-時域轉換函數,在通過低通濾波器之後的頻域信號需要在進行傅里葉逆變換之後通過抽樣判決來完成數字解調的步驟。

這種濾波方法其實並不算是數字濾波,在大多數的情況下數字濾波是使用數字濾波器來實現的,接下來繼續完成數字濾波器的matlab相關實現方法

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章