用matlab进行BPSK调制和解调的仿真

用matlab进行BPSK调制和解调的仿真,第1张

function output_frame = demodulation(input_modu, index)

% demodulation for IEEE80211a

% Input: input_modu, complex values representing constellation points

% index

% Output: output_frame, output bit stream (data unit is one bit)

% In this version, increase the quatilization levels into 8

% note: Matlab index starts from 1

Q_length=length(input_modu);

QAM_input_I = real(input_modu);

QAM_input_Q = imag(input_modu);

output_frame = zeros(1,length(input_modu)index);

switch index

case 1,

BPSK_Demodu_I = [0 1]; %f(m)=(m+1)/2 + 1, so I=-1 ---> 1, I=1 ---> 2

idx = find(QAM_input_I>1);

QAM_input_I(idx) = 1;

idx = find(QAM_input_I<-1);

QAM_input_I(idx) = -1;

output_frame = BPSK_Demodu_I(round((QAM_input_I+1)/2) + 1);

case 2,

QPSK_Demodu_IQ = [0 1]; %f(m)=(m+1)/2 + 1, so I=-1 ---> 1, I=1 ---> 2

idx = find(QAM_input_I>1);

QAM_input_I(idx) = 1;

idx = find(QAM_input_I<-1);

QAM_input_I(idx) = -1;

idx = find(QAM_input_Q>1);

QAM_input_Q(idx) = 1;

idx = find(QAM_input_Q<-1);

QAM_input_Q(idx) = -1;

output_frame(1:2:end) = QPSK_Demodu_IQ(round((QAM_input_I+1)/2) + 1);

output_frame(2:2:end) = QPSK_Demodu_IQ(round((QAM_input_Q+1)/2) + 1);

case 3,

remapping=[0 0 0;0 0 1;0 1 0;0 1 1;1 0 0;1 0 1;1 1 0;1 1 1]';

for i=1:Q_length

phase_det=[2<QAM_input_I(i)&0<QAM_input_Q(i) 0<QAM_input_I(i)&QAM_input_I(i)<2&0<QAM_input_Q(i) QAM_input_I(i)<-2&0<QAM_input_Q(i) -2<QAM_input_I(i)&QAM_input_I(i)<0&0<QAM_input_Q(i) QAM_input_I(i)<-2&QAM_input_Q(i)<0 QAM_input_I(i)<0&-2<QAM_input_I(i)&QAM_input_Q(i)<0 2<QAM_input_I(i)&QAM_input_Q(i)<0 0<QAM_input_I(i)&QAM_input_I(i)<2&QAM_input_Q(i)<0]

a=find(phase_det);

output_frame((1+(i-1)3):(3+(i-1)3))=remapping((1+(a-1)3):(3+(a-1)3));

end

case 4,

QAM_16_Demodu_IQ = [0 1 3 2]; %f(m)=(m+3)/2 + 1, so I=-3 ---> 1, I=1 ---> 3

idx = find(QAM_input_I>3);

QAM_input_I(idx) = 3;

idx = find(QAM_input_I<-3);

QAM_input_I(idx) = -3;

idx = find(QAM_input_Q>3);

QAM_input_Q(idx) = 3;

idx = find(QAM_input_Q<-3);

QAM_input_Q(idx) = -3;

tmp = round((QAM_input_I+3)/2) + 1;

output_frame(1:4:end) = bitget(QAM_16_Demodu_IQ(tmp),2);

output_frame(2:4:end) = bitget(QAM_16_Demodu_IQ(tmp),1);

tmp = round((QAM_input_Q+3)/2) + 1;

output_frame(3:4:end) = bitget(QAM_16_Demodu_IQ(tmp),2);

output_frame(4:4:end) = bitget(QAM_16_Demodu_IQ(tmp),1);

case 5,

remapping=[0 0 0 0 0;0 0 0 0 1;0 0 0 1 0;0 0 0 1 1;0 0 1 0 0;0 0 1 0 1;0 0 1 1 0;0 0 1 1 1;

0 1 0 0 0;0 1 0 0 1;0 1 0 1 0;0 1 0 1 1;0 1 1 0 0;0 1 1 0 1;0 1 1 1 0;0 1 1 1 1;

1 0 0 0 0;1 0 0 0 1;1 0 0 1 0;1 0 0 1 1;1 0 1 0 0;1 0 1 0 1;1 0 1 1 0;1 0 1 1 1;

1 1 0 0 0;1 1 0 0 1;1 1 0 1 0;1 1 0 1 1;1 1 1 0 0;1 1 1 0 1;1 1 1 1 0;1 1 1 1 1]';

for i=1:Q_length

phase_det=[4<QAM_input_I(i)&0<QAM_input_Q(i)&QAM_input_Q(i)<2;2<QAM_input_I(i)&QAM_input_I(i)<4&0<QAM_input_Q(i)&QAM_input_Q(i)<2;0<QAM_input_I(i)&QAM_input_I(i)<2&0<QAM_input_Q(i)&QAM_input_Q(i)<2;4<QAM_input_I(i)&2<QAM_input_Q(i)&QAM_input_Q(i)<4;

2<QAM_input_I(i)&QAM_input_I(i)<4&2<QAM_input_Q(i)&QAM_input_Q(i)<4;0<QAM_input_I(i)&QAM_input_I(i)<2&2<QAM_input_Q(i)&QAM_input_Q(i)<4;2<QAM_input_I(i)&QAM_input_I(i)<4&4<QAM_input_Q(i);0<QAM_input_I(i)&QAM_input_I(i)<2&4<QAM_input_Q(i);

QAM_input_I(i)<-4&0<QAM_input_Q(i)&QAM_input_Q(i)<2;-4<QAM_input_I(i)&QAM_input_I(i)<-2&0<QAM_input_Q(i)&QAM_input_Q(i)<2;-2<QAM_input_I(i)&QAM_input_I(i)<0&0<QAM_input_Q(i)&QAM_input_Q(i)<2;QAM_input_I(i)<-4&2<QAM_input_Q(i)&QAM_input_Q(i)<4;

-4<QAM_input_I(i)&QAM_input_I(i)<-2&2<QAM_input_Q(i)&QAM_input_Q(i)<4;-2<QAM_input_I(i)&QAM_input_I(i)<0&2<QAM_input_Q(i)&QAM_input_Q(i)<4;-4<QAM_input_I(i)&QAM_input_I(i)<-2&4<QAM_input_Q(i);-2<QAM_input_I(i)&QAM_input_I(i)<0&4<QAM_input_Q(i);

QAM_input_I(i)<-4&-2<QAM_input_Q(i)&QAM_input_Q(i)<0;-4<QAM_input_I(i)&QAM_input_I(i)<-2&-2<QAM_input_Q(i)&QAM_input_Q(i)<0;-2<QAM_input_I(i)&QAM_input_I(i)<0&0<QAM_input_Q(i)&QAM_input_Q(i)<0;QAM_input_I(i)<-4&-4<QAM_input_Q(i)&QAM_input_Q(i)<-2;

-4<QAM_input_I(i)&QAM_input_I(i)<-2&-4<QAM_input_Q(i)&QAM_input_Q(i)<-2;-2<QAM_input_I(i)&QAM_input_I(i)<0&-4<QAM_input_Q(i)&QAM_input_Q(i)<-2;-4<QAM_input_I(i)&QAM_input_I(i)<-2&QAM_input_Q(i)<-4;-2<QAM_input_I(i)&QAM_input_I(i)<0&QAM_input_Q(i)<-4;

4<QAM_input_I(i)&-2<QAM_input_Q(i)&QAM_input_Q(i)<0;2<QAM_input_I(i)&QAM_input_I(i)<4&-2<QAM_input_Q(i)&QAM_input_Q(i)<0;0<QAM_input_I(i)&QAM_input_I(i)<2&0<QAM_input_Q(i)&QAM_input_Q(i)<0;4<QAM_input_I(i)&-4<QAM_input_Q(i)&QAM_input_Q(i)<-2;

2<QAM_input_I(i)&QAM_input_I(i)<4&-4<QAM_input_Q(i)&QAM_input_Q(i)<-2;0<QAM_input_I(i)&QAM_input_I(i)<2&-4<QAM_input_Q(i)&QAM_input_Q(i)<-2;2<QAM_input_I(i)&QAM_input_I(i)<4&QAM_input_Q(i)<-4;0<QAM_input_I(i)&QAM_input_I(i)<2&QAM_input_Q(i)<-4];

a=find(phase_det);

output_frame((1+(i-1)5):(5+(i-1)5))=remapping((1+(a-1)5):(5+(a-1)5));

end %5+i 3+i 1+i 5+3i 3+3i 1+3i 3+5i 1+5i -5+i -3+i -1+i -5+3i -3+3i -1+3i -3+5i -1+5i -5-i -3-i -1-i -5-3i -3-3i -1-3i -3-5i -1-5i 5-i 3-i 1-i 5-3i 3-3i 1-3i 3-5i 1-5i

case 6,

QAM_64_Demodu_IQ = [0 1 3 2 6 7 5 4]; %f(m)=(m+7)/2 + 1, so I=-7 ---> 1, I=1 ---> 5

idx = find(QAM_input_I>7);

QAM_input_I(idx) = 7;

idx = find(QAM_input_I<-7);

QAM_input_I(idx) = -7;

idx = find(QAM_input_Q>7);

QAM_input_Q(idx) = 7;

idx = find(QAM_input_Q<-7);

QAM_input_Q(idx) = -7;

tmp = round((QAM_input_I+7)/2) + 1;

output_frame(1:6:end) = bitget(QAM_64_Demodu_IQ(tmp),3);

output_frame(2:6:end) = bitget(QAM_64_Demodu_IQ(tmp),2);

output_frame(3:6:end) = bitget(QAM_64_Demodu_IQ(tmp),1);

tmp = round((QAM_input_Q+7)/2) + 1;

output_frame(4:6:end) = bitget(QAM_64_Demodu_IQ(tmp),3);

output_frame(5:6:end) = bitget(QAM_64_Demodu_IQ(tmp),2);

output_frame(6:6:end) = bitget(QAM_64_Demodu_IQ(tmp),1);

end

帮你找了一个,QPSK仿真,格雷码,瑞利衰减信道,加性高斯白噪声,已在Matlab 2009中运行通过:

>

以上就是关于用matlab进行BPSK调制和解调的仿真全部的内容,包括:用matlab进行BPSK调制和解调的仿真、MATLAB中QPSK的调制解调程序、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/10034132.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-04
下一篇2023-05-04

发表评论

登录后才能评论

评论列表(0条)

    保存