600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > matlab代码仿真qpsk星座图 信号调制与解调 用脚本文件代码不是simulink

matlab代码仿真qpsk星座图 信号调制与解调 用脚本文件代码不是simulink

时间:2021-12-19 22:15:26

相关推荐

matlab代码仿真qpsk星座图 信号调制与解调 用脚本文件代码不是simulink

要求:

1.已知函数

function ModSig = QpskMod(SrcBit,PhaseOffset)

SrcBitLen = length(SrcBit);

if(mod(SrcBitLen,2) ~= 0)

error('The Bit length must be the 2N!');

end

Symbole = reshape(SrcBit,[2,SrcBitLen/2]);

ScatterPoint = exp(1i*(2*pi*(0:3)/4 + PhaseOffset));

ScatterPointGray = [ScatterPoint(1),ScatterPoint(2),ScatterPoint(4),ScatterPoint(3)];

SymboleValue = Symbole(1,:)*2 + Symbole(2,:);

ModSig = ScatterPointGray(SymboleValue+1);

end

function DemodSig = QpskDemod(ModSig,PhaseOffset)

ScatterPoint = exp(1i*(2*pi*(0:3)/4 + PhaseOffset));

% ScatterPointGray = [ScatterPoint(1),ScatterPoint(2),ScatterPoint(4),ScatterPoint(3)];

ModSigDistance = zeros(4,length(ModSig));

for k = 1:4

ModSigDistance(k,:) = abs(ModSig - ScatterPoint(k));

end

[~, MinIdx]= min(ModSigDistance);%zui di si wang lv

DemodSig = zeros(1,2*length(ModSig));

for k = 1 : length(ModSig)

switch MinIdx(k)

case 1

DemodSig(2*k-1:2*k) = [0 0];

case 2

DemodSig(2*k-1:2*k) = [0 1];

case 3

DemodSig(2*k-1:2*k) = [1 1];

case 4

DemodSig(2*k-1:2*k) = [1 0];

end

end

end

2.用matlab脚本文件写代码,画图出现调制与解调,包括星座图。

3.不能用simulink偷懒。

matlab脚本文件:

fs=1000;

t=[0:1/fs:8];

SrcBit=[0 0 0 1 1 1 1 0];

x1=0*t;

for i=1:8

x0=rectpuls(t-i+0.5);

x1=x1+SrcBit(i)*x0;

end

PhaseOffset=pi/2; % Do the qpsk modulate;

figure();

subplot(4,1,1);

plot(t,x1);axis([-0.1 8.1 -0.1 1.1]);

title('Source bit');

xlabel('Samples');

ylabel('Amplitude');

ModSig = QpskMod(SrcBit,PhaseOffset);

subplot(4,1,2); scatter(real(ModSig),imag(ModSig)); grid;

title('Transmitted QPSK data'); xlabel('Real');

ylabel('Imaginary'); % Do the qpsk demodulate;

DemodSig = QpskDemod(ModSig,PhaseOffset);

fs=1000;

t=[0:1/fs:8];

x1=0*t;

for i=1:8

x0=rectpuls(t-i+0.5);

x1=x1+DemodSig(i)*x0;

end

subplot(4,1,3);

plot(t,x1);axis([-0.1 8.1 -0.1 1.1]); title('Demodulated bit');

xlabel('Samples'); ylabel('Amplitude');

运行结果,图像:

成功了

SrcBit携带了码元信息,必须是偶数,且为二进制整数,形式为(偶数 x 1)matrix ,并且脚本文件的SrcBit=[]的[]中不能有;这个运算符。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。