matlab 这是 OFDM 的时域和频域的子载波图形% ofdm spectrum plotclear all;close all;clc;Num_Sc = 12; % 13 subcarriersTs = 1; % 1sF_space = 1/Ts;F = -F_space*Num_Sc/2-4:0.001:F_space*Num_Sc/2+4;F_spectrum = zeros(Num_Sc,length(F));for i = -Num_Sc/2:1:Num_Sc/2 F_spectrum(i+Num_Sc/2+1,1:end) = sin(2*pi*(F-i*F_space).*Ts/2)./(2*pi*(F-i*F_space).*Ts/2);endplot(F,F_spectrum)grid on% ofdm subcarrier plotclear all;close all;clc;N = 256;M = 6;N_symbol = 1;% s_data = [-3-sqrt(-1)*3 -3-sqrt(-1) -3-sqrt(1) -3-sqrt(-1)*3]/sqrt(10);s_data = (1+sqrt(-1))/sqrt(2); tx_data = repmat(s_data,1,N); % some initial phase% Original_bin = randint(2,N*N_symbol,2,222);% Modobj = modem.qammod('M',4,'SymbolOrder','Gray','InputType','Bit');% tx_data = modulate(Modobj,Original_bin)/sqrt(10);for j = 0:1:N_symbol-1for k =0:1:N-1for n = 0:1:N-1 x_tmp(k+1,n+1+j*N) = tx_data(k+1+j*N)*exp(sqrt(-1)*2*pi*k*n/N);endendend% plot four-subcarrierfigure(1)plot(real(x_tmp(1:4,1:end).'))clear;clc;SNR=10; % 信噪比fl=128; % 设置 FFT 长度Ns=6; %设置一个祯结构中 OFDM 信号的个数para=128;%设置并行传输的子载波个数sr=250000; %符号速率br=sr.*2;% 每个子载波的比特率gl=32 %保护时隙的长度Signal=rand(1,para*Ns*2)>0.5;%产生 0,1 随即序列,符号数为 para*Ns*2for i=1:para for j=1:Ns*2 SigPara(i,j)=Signal(i*j);%串并变换 endend%QPSK 调制,将数据分为两个通道for j=1:Ns ich(:,j)=SigPara(:,2*j-1); qch(:,j)=SigPara(:,2*j);endkmod=1./sqrt(2);ich1=ich.*kmod;qch1=qch.*kmod;x=ich1+qch1.*sqrt(-1); %频域数据变时域y=ifft(x);ich2=real(y);qch2=imag(y);%插入保护间隔ich3=[ich2(fl-gl+1:fl,:);ich2];qch3=[qch2(fl-gl+1:fl,:);qch2];%并串变换ich4=reshape(ich3,1,(fl+gl)*Ns);qch4=reshape(qch3,1,(fl+gl)*Ns);%形成复数发射数据TrData=ich4+qch4.*sqrt(-1);%接收机%加入高斯白噪声ReData=awgn(TrData,SNR,'measured');%接收端%移去保护间隔idata=real(ReData);qdata=imag(ReData);idata1=reshape(idata,fl+gl,Ns);qdata1=reshape(qdata,fl+gl,Ns);idata2=idata1(gl+1:gl+fl,:); ...