|
楼主 |
发表于 2009-4-27 19:39
|
显示全部楼层
回复 楼主 yycc2006 的帖子
通过努力,基本把昨天的问题解决啦!:lol :victory:
把相关的程序段贴出来,希望对大家有所帮助!
假设待调制的复信号为data
fc=1000;fs=1/Ts;
len=length(data);
n=0:1:len-1;
st1=real(data).*cos(2*pi*fc*n*Ts);%I路调制
st2=imag(data).*sin(2*pi*fc*n*Ts);%Q路调制
st=st1+st2;%合路信号,经信道传输
%%%%%%%%%%%%%%%% receiver %%%%%%%%%%%%%%
rt1=st.*cos(2*pi*fc*n*Ts);
rt2=st.*sin(2*pi*fc*n*Ts);
%设计低通滤波器
filterorder=5;
[b,a] = butter(filterorder,fc/(fs/2));
rtout1 = filter(b,a,rt1); %
rtout2 = filter(b,a,rt2);
rt=rtout1+i*rtout2; %
delay_butter=filterorder/2;
rt=rt(delay_butter+1:end);
rt就是接收端的解调信号!
%=====================================
此外,还可以用matlab自带的函数来解决
发送端:
st1=ammod(real(data),fc,fs);
st2=ammod(imag(data),fc,fs,pi/2);
st=st1+st2;%合路信号,经信道传输
接收端:
rt1=amdemod(st,fc,fs,[],[],[],[]);
rt2=amdemod(st,fc,fs,pi/2,[],[],[]);
rt=rt1+i*rt2;
看起来很简单吧?呵呵!:loveliness:
正所谓会者不难难者不会。:@P
[ 本帖最后由 yycc2006 于 2009-4-27 19:50 编辑 ] |
评分
-
1
查看全部评分
-
|