matlab仿真OFDM 和 DFTS-OFDM 两种信号的生成及峰均比概率统计,并绘制各自CCDF曲线
时间: 2024-03-18 22:41:40 浏览: 97
以下是MATLAB OFDM和DFTS-OFDM信号生成及峰均比概率统计的示例代码,同时绘制了各自的CCDF曲线:
```matlab
% OFDM系统参数
N = 64; % 子载波数量
M = 16; % 调制阶数
cp_len = 16; % 循环前缀长度
% 生成随机数据
data = randi([0 M-1], N, 1);
% OFDM调制
ofdm_mod = @(x) sqrt(N)*ifft(x,N);
mod_data = qammod(data,M,'gray');
ofdm_data = ofdm_mod(mod_data);
% 计算峰均比
PAPR = @(x) (max(abs(x)).^2)/mean(abs(x).^2);
PAPR_original = PAPR(ofdm_data);
% DFTS-OFDM调制
dfts_ofdm_mod = @(x) sqrt(N)*ifft(fft(x).*dftmtx(N),N);
dfts_mod_data = qammod(data,M,'gray');
dfts_ofdm_data = dfts_ofdm_mod(dfts_mod_data);
% 计算峰均比
PAPR_dfts = PAPR(dfts_ofdm_data);
% 统计峰均比概率
num_iter = 10000; % 循环次数
PAPR_vec = zeros(num_iter,2); % 存储峰均比
for i = 1:num_iter
% OFDM系统
data = randi([0 M-1], N, 1);
mod_data = qammod(data,M,'gray');
ofdm_data = ofdm_mod(mod_data);
PAPR_vec(i,1) = PAPR(ofdm_data);
% DFTS-OFDM系统
dfts_mod_data = qammod(data,M,'gray');
dfts_ofdm_data = dfts_ofdm_mod(dfts_mod_data);
PAPR_vec(i,2) = PAPR(dfts_ofdm_data);
end
% 绘制CCDF曲线
[N1,X1] = hist(PAPR_vec(:,1), 100);
[N2,X2] = hist(PAPR_vec(:,2), 100);
ccdf1 = 1 - cumsum(N1)/sum(N1);
ccdf2 = 1 - cumsum(N2)/sum(N2);
semilogy(X1,ccdf1,'r',X2,ccdf2,'b');
legend('OFDM','DFTS-OFDM');
xlabel('PAPR (dB)');
ylabel('CCDF');
```
在这个示例代码中,我们使用了随机数据和16-QAM调制,生成了OFDM和DFTS-OFDM信号,并对其进行了峰均比概率统计和CCDF曲线绘制。你可以根据需要进行参数调整和修改。
阅读全文