You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用MATLAB有效绘制OFDM信号带外辐射并对比SC-FDMA?

改进OFDM/SC-FDMA带外辐射功率谱绘制的方法

直接用periodogram得到的谱噪声大,本质是它仅用单段信号做频谱估计,方差高。下面是几个更有效的改进方法:

1. 用Welch法(分段加窗平均)降低谱方差

MATLAB的pwelch函数是实现Welch方法的工具,它将信号分成多段、加窗后分别做周期图再平均,能大幅降低噪声,同时保留频谱分辨率。

示例代码:

% 设置参数:窗函数、分段长度、重叠率、FFT点数
win = hann(1024); % 汉宁窗(比矩形窗旁瓣低,减少频谱泄漏)
noverlap = 512; % 重叠50%,提升平滑度
nfft = 4096; % 增加FFT点数提高分辨率
fs = 1e6; % 替换为你的信号采样率

% 计算功率谱密度
[pxx,f] = pwelch(ofdm_Tx, win, noverlap, nfft, fs);

% 绘制带外辐射(转为dB)
plot(f, 10*log10(pxx));
xlabel('频率(Hz)');
ylabel('功率谱密度(dB/Hz)');
title('OFDM信号带外辐射');

2. 手动高分辨率FFT计算

如果需要更灵活的控制,可以直接用fft函数做零填充,提升频谱的精细程度,再手动计算功率谱:

示例代码:

fs = 1e6; % 替换为你的信号采样率
nfft = 8192; % 零填充到8192点,提升分辨率

% 计算FFT并归一化
ofdm_fft = fft(ofdm_Tx, nfft);
pxx = abs(ofdm_fft).^2 / (nfft * fs); % 归一化到功率谱密度单位

% 生成对称频率轴
f = (-nfft/2:nfft/2-1)*(fs/nfft);

% 绘制对称的功率谱(转dB)
plot(f, 10*log10(fftshift(pxx)));
xlabel('频率(Hz)');
ylabel('功率谱密度(dB/Hz)');

3. 确保信号符合实际发射结构

IFFT后的OFDM信号通常需要添加**循环前缀(CP)**再发射,直接分析IFFT输出的信号可能和实际带外辐射有偏差。建议先添加CP后再做频谱分析,结果更贴近真实性能:

cp_len = 64; % 替换为你的循环前缀长度
ofdm_tx_with_cp = [ofdm_Tx(end-cp_len+1:end), ofdm_Tx]; % 添加CP

% 再用pwelch分析带CP的信号
[pxx,f] = pwelch(ofdm_tx_with_cp, hann(1024), 512, 4096, fs);
plot(f, 10*log10(pxx));

4. 对比OFDM和SC-FDMA的注意事项

对比两者带外辐射时,必须保证信号总功率一致,否则对比没有意义。可以先对两个信号做归一化处理:

% 归一化OFDM信号
ofdm_Tx_norm = ofdm_Tx / rms(ofdm_Tx);
% 归一化SC-FDMA信号
scfdma_Tx_norm = scfdma_Tx / rms(scfdma_Tx);

% 分别计算功率谱进行对比
[pxx_ofdm,f] = pwelch(ofdm_Tx_norm, hann(1024), 512, 4096, fs);
[pxx_scfdma,f] = pwelch(scfdma_Tx_norm, hann(1024), 512, 4096, fs);

plot(f, 10*log10(pxx_ofdm), f, 10*log10(pxx_scfdma));
legend('OFDM', 'SC-FDMA');

内容的提问来源于stack exchange,提问作者Amitabha Bhattacharjee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 21:22:19