MATLAB语音文件调制与解调,matlab BPSK 调制与解调

clc;

close all;

clear;

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%

%  假定:

%     2倍载波频率采样的bpsk信号

%     调制速率为在波频率的 N/2m

%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

m=128;

N=512;

n=1:1:N;

N0=0.5*randn(1,N) %噪声

h0=zeros(1,N);

%     30阶低通滤波器 h0

f = [0 0.3 0.3 1]; w0 = [1 1 0 0];

b = fir2(30,f,w0);

[h,w] = freqz(b,1,N/2);

h0(1,1:N/2)=abs(h');

for i=1:N/2

h0(1,N-i+1)=h0(1,i);

end;

%%%%%%%%%   随机序列

a=rand(1,m);

for i=1:m

if(a(1,i)>0.5)

a(1,i)=1;

else

a(1,i)=-1;

end;

end;

a

%%% 生成BPSK信号

bpsk_m=zeros(1,N);

j=1;k=1;

for i=1:N

if(j==(N/m+1))

j=1;

k=k+1;

end;    % 0.05*pi 为初始相位,可以任意改变

bpsk_m(1,i)=a(1,k)*sin(2*pi*0.5*i+0.05*pi)+a(1,k)*cos(2*pi*0.5*i+0.05*pi);

j=j+1;

end;

bpsk_m=bpsk_m+N0;% 信号加噪声,模拟过信道

% 接收处理  用正交本振与信号相乘,变频

bpsk_m1=bpsk_m.*sin(2*pi*0.5*n);

bpsk_m2=bpsk_m.*cos(2*pi*0.5*n);

%滤波

tempx=fft(bpsk_m1);

tempx=tempx.*h0;     %低通滤波

tempx=ifft(tempx);

real_x=real(tempx);

tempx=h0.*fft(bpsk_m2);

tempx=tempx.*h0;     %低通滤波

tempx=ifft(tempx);

real_x1=real(tempx);

subplot(2,1,1);

plot(real_x1+real_x,'b');

axis([1  N -2.5 2.5]);

grid on;

hold on;

In=real_x1+real_x;      % 可只取一路,这里取了两路之和

for i=1:N               % 滤波后整形

if(In(1,i)>0)       % 判决,得到解调结果

In(1,i)=1;

else

In(1,i)=-1;

end;

end;

plot(In,'r');

an=zeros(1,m);

for i=1:m

an(1,i)=In(1,(i-1)*N/m+N/(2*m));

end;

subplot(2,1,2);  %  比较误码

plot(an,'r*');hold on;

axis([1  m -2 2]);

plot(a,'b^');

[本帖最后由 edifiers2008 于 2009-2-6 19:38 编辑]

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值