要求:
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=[]的[]中不能有;这个运算符。