⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ofdm_16qam.m

📁 ofdm程序
💻 M
字号:
clear;
close all;
clc;
disp('请按任意键继续......')  
pause
snr=input('请你输入信号经信道时的信噪比snr(以dBW为单位):');
N=64;%N为载波数,即一个OFDM符号的长度

%----------------------------发射部分----------------------------

for k=1:N
    X(k)=fix(rand()*16);%随机产生64个[0,15]之间的整数
    X1(k)=QAM16_mod(X(k));%进行星座图映射,X 可以认为是已经进行串/并转换后的输出信号
end
disp('原输入的数据为:')
disp(X)
figure(1)
plot(real(X1),imag(X1),'.r');
title('随机输入数据的星座图');
xlabel('An(实部)');
ylabel('Bn(虚部)');
X2=ifft(X1,N);%对X进行傅里叶反变换
X3=[X2((N-0.25*N+1):N),X2];%在该OFDM符号中加入循环前缀
X4=awgn(X3,snr);%接收机最终接收的信号
figure(2)
subplot(2,2,1)
plot(1:numel(X3),real(X3),'r');
title('加入噪声前的信号波形(实部部分)');
subplot(2,2,3)
plot(1:numel(X4),real(X4),'r');
title('加入噪声后的信号波形(实部部分)');
subplot(2,2,2)
plot(1:numel(X3),imag(X3),'b');
title('加入噪声前的信号波形(虚部部分)');
subplot(2,2,4)
plot(1:numel(X4),imag(X4),'b');
title('加入噪声后的信号波形(虚部部分)');

%------------------------------接收部分------------------------------

Y1=X4(0.25*N+1:N+0.25*N);
Y2=fft(Y1,N);
figure(3)
plot(real(X1),imag(X1),'.r',real(Y2),imag(Y2),'.b');
title('接收的OSDF符号的星座图')
xlabel('An(实部)');
ylabel('Bn(虚部)');
for k=1:numel(Y1)
   [Y(k),Y3(k)]=QAM16_demod(Y2(k));
end
disp('接收机最终得到的数据为:')
disp(Y)
error=0;%解调后错误的个数
for k=1:N
    if X(k)~=Y(k)
        error=error+1;
    end
end
disp('解调后错误的个数为:')
disp(error)
disp('误码率为:')
disp(error/N)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -