OFDM-PSD(功率谱密度)绘制

以下代码是16QAM OFDM信号的PSD代码

参考:https://www.mathworks.com/matlabcentral/fileexchange/36309-simulation-of-an-ofdm-system-with-the-psd

clc;clear;close all;
NsubCar=256; %子载波个数
N_sample = 4; %过采样系数
NFFT =NsubCar *N_sample;
nOFDM=1;
M=16; 
k=log2(M);
cpLength= 72;

%% ---------------滤波参数-----------
L = 513;        % 滤波器长度 = filterOrder+1,奇数
halfFilt = floor(L/2);  %频带中心
n = -halfFilt:halfFilt;
pb = sinc(NsubCar.*n./NFFT); % Sinc函数滤波器
w = (0.5*(1+cos(2*pi.*n/(L-1)))).^0.6; %Hanning截断窗
fnum = (pb.*w)/sum(pb.*w); % 归一化低通滤波器系数(画滤波器冲激响应)

%% -------- 创建dsp滤波对象--------------
filtTx = dsp.FIRFilter('Numerator', fnum); %滤波器是偶对称的,所以f*(-n) = f(n)
filtRx = clone(filtTx); 

%% -------------传输bit --------------
nbit=NsubCar*nOFDM*k; 
x= rand(1,nbit)>0.5;                                          %随机产生长度为n的0或者1
x_reshape=reshape(x,k,length(x)/k)';                          %对数据流进行分组,对于16QAM,则每4位一组
x_de=bi2de(x_reshape,'left-msb');                             %转化成10进制,作为qammod的输入
x_symbol=reshape(x_de,NsubCar,nOFDM); 

%% ---------M-QAM调制--------
x_mod=qammod(x_de,M,'Gray','UnitAveragePower',true);                                  %调制到星座图上
x_par=reshape(x_mod,NsubCar,nOFDM); 
offset = (NFFT-NsubCar)/2; % 将数据0放入

%% --------过采样-------------
x_before_ifft= [zeros(offset,1); x_par; zeros(NFFT-offset-NsubCar,1)];

%% ------------------ifft-------------
X_IFFT = ifft(ifftshift(x_before_ifft));

%% -------------OFDM功率谱密度图-- Power Spectral Density-----------
fsMHz = 2;
[Pxx,W] = pwelch(X_IFFT(:,1),[],[],2048,40);    
figure;
plot([-1024:1023]*fsMHz/2048,10*log10(fftshift(Pxx)));
grid on;
hold on;
legend('Original');
xlabel('frequency, MHz')
ylabel('power spectral density')
hold off;

%% ------------ Power Spectral Density after the SSPA-----------
ifft_data_sspa=X_IFFT./((1+X_IFFT.^4).^(1/4));
figure;
[Pxx_sspa,W] = pwelch(ifft_data_sspa(:,1),[],[],2048,100);    
plot([-1024:1023]*fsMHz/2048,10*log10(fftshift(Pxx_sspa)));grid;hold on;
legend('Original');
xlabel('frequency, MHz')
ylabel('power spectral density')
hold off;

仿真结果:

 

 

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值