尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
MATLAB OFDM仿真:发射机、同步、信道估计与误码率分析
简介《基于MATLAB的OFDM系统仿真及分析》是一份通信工程专业的本科毕业设计论文面向通信、电子信息类学生及OFDM技术初学者系统讲解正交频分复用的原理、参数设计与仿真实现。压缩包仅含1个docx文档大小805KB内容完整、结构清晰可直接阅读或参考撰写论文。目前已有239人学习。论文从OFDM发展概况入手推导了调制解调与符号表达式给出子载波数、循环前缀等参数设计公式并重点分析高斯信道与多径瑞利衰落信道下保护时隙、循环前缀及LS信道估计对系统误码率的影响同时基于IFFT/FFT建立了OFDM系统模型附有MATLAB参考程序和误码率对比曲线可用于课程设计、毕业设计或通信系统仿真入门。整体篇幅适中兼顾理论与实验能帮助读者快速掌握OFDM建模、仿真及性能评估方法。1. 从一条误码率曲线说起OFDM仿真到底在仿真什么很多人在MATLAB里跑完一段OFDM仿真看到误码率曲线比理论曲线差了好几个dB第一反应是“信道加错了”或者“信噪比算错了”。但实际项目里我见过更多的情况是循环前缀长度刚好等于信道时延扩展符号定时偏移悄悄吃掉了一个采样点或者导频位置和插值方式压根不匹配。相比单载波系统OFDM的仿真链路长、参数耦合重任何一个模块的参数边界没有建明白最终曲线都会以“看似合理”的方式偏离理论——这种偏离最难排查。这篇内容对应一个很常见的工程诉求:用MATLAB把OFDM从发射端IFFT到接收端FFT、从同步到信道估计、从导频设计到误码率统计完整地搭起来并做定量分析。核心不是贴一段能跑的代码而是把每一处“参数为什么这样设、改大了会怎样、改小了会怎样”讲清楚。适合两类人一是刚接触OFDM、想把课本里的框图变成可见曲线的学生和转岗工程师二是已经在用仿真工具做链路预算、但需要回头核对参数边界和算法选择的人。文章会沿着“发射机建模 → 同步与循环前缀 → 信道估计与导频 → 误码率分析与验证 → 可落地的改进方向”这条路径展开所有代码基于MATLAB基础函数编写不依赖额外通信工具箱方便你在本地直接复现。2. 发射机建模与MATLAB实现从串行比特流到OFDM符号2.1 OFDM的数学本质与仿真建模的关系OFDM的核心思想是把一个高速串行数据流通过串并转换分配到N个正交子载波上并行传输。在数学上一个OFDM符号的时域表达式可以写成[ x(t) \sum_{k0}^{N-1} X(k) e^{j2\pi k\Delta f t}, \quad 0 \le t T ]其中 (X(k)) 是第k个子载波上的调制符号(\Delta f) 是子载波间隔(T) 是符号周期。这个表达式和IDFT逆离散傅里叶变换的形式完全一致这也是OFDM能用IFFT高效实现的原因——发射端只需要对频域符号向量做一次N点IFFT就能得到时域采样序列。在MATLAB仿真里这个过程对应如下映射关系频域符号向量 (X)长度为N → 就是调制后待发送的数据IFFT变换 →ifft(X, N)加循环前缀 → 把IFFT输出的后 (N_{cp}) 个采样点复制到序列开头并串转换 →reshape或直接拼接搭建仿真链路时最容易出错的地方在于功率归一化。ifft函数本身不做能量归一化如果直接发送IFFT输出时域信号功率会比频域符号功率大N倍。因此在实际仿真中往往需要将频域符号的能量约束为单位平均功率比如QPSK符号能量为1同时发射端通常在IFFT后乘以 (\sqrt{N}) 的归一化因子或等效地在接收端除以 (\sqrt{N})以保证收发链路功率一致。否则后续加噪声时你的SNR定义就会偏差而且偏得“很隐蔽”——曲线形状对绝对位置错。2.2 惯用的发射机参数集做OFDM系统仿真时我习惯先定义一组全局参数结构体而不是把数字散落在脚本里。这样做的直接好处是改子载波数、循环前缀长度、调制阶数时只需要动一个地方且每个仿真记录都自包含参数。以下几个参数是必须首先确定的NFFT点数即子载波总数常用512、1024仿真验证时也可以用64、128跑得快N_cp循环前缀长度至少大于信道最大时延扩展对应的采样点数M调制阶数QPSK为4、16QAM为16、64QAM为64num_symbols一次仿真发送的OFDM符号数snr_dB信噪比扫描向量需要说明的是子载波总数和FFT点数在仿真中可以视为同一个数但真实系统里FFT点数往往大于实际使用的子载波数多出来的部分用作频带保护间隔guard band。从仿真角度看如果你只是想验证算法性能直接让N等于子载波数即可如果你的目标是模拟真实系统的频谱占用和邻带干扰那就要把N留出余量只在中间部分子载波上放数据。2.3 发射机关键代码QPSK映射、串并变换、加循环前缀下面给出一段完整的发射机搭建代码基于纯MATLAB基础函数无工具箱依赖% OFDM发射机参数配置 N 64; % FFT点数 / 子载波总数 N_cp 16; % 循环前缀长度需大于信道最大时延 M 4; % 调制阶数4QPSK, 1616QAM num_symbols 100; % 发送OFDM符号数量 % 生成随机比特流并做QPSK调制 data_bits randi([0 1], N * num_symbols * log2(M), 1); data_symbols qammod(data_bits, M, InputType, bit, UnitAveragePower, true); data_matrix reshape(data_symbols, N, num_symbols); % IFFT变换到时域 ifft_matrix ifft(data_matrix, N, 1); % 加循环前缀 tx_matrix [ifft_matrix(end-N_cp1:end, :); ifft_matrix]; tx_signal tx_matrix(:);这段代码的逻辑如下第一段生成N * num_symbols * log2(M)个随机比特对应每个子载波在每个符号上承载log2(M)个比特第二段用qammod完成比特到符号的映射UnitAveragePower选项确保调制后的符号平均功率为1这比手动归一化更可靠第三段按列做IFFT每一列是一个OFDM符号的时域波形第四段把每个符号的最后N_cp个采样点复制到符号头部再按列拼接成串行时域信号。需要特别注意两点。第一qammod的InputType参数在较老版本的MATLAB中可能不支持如果报错可以拆成两步先用bi2de把比特转成十进制数再用qammod调制。第二循环前缀的加入是在“每个符号”层面完成的不是在整个数据块层面。reshape操作时MATLAB按列填充所以tx_matrix(:)得到的串行顺序是“第一个符号的所有采样点 → 第二个符号的所有采样点”这正是OFDM发射机需要的输出格式。如果把维度顺序搞反接收端解调时会出现符号间错位而且错位位置和循环前缀长度有关排查起来非常费劲。2.4 为什么发射机要先做频域符号功率归一化这里需要单独强调一下功率归一化的问题。在OFDM仿真中误码率曲线的横轴是 (E_b/N_0) 或 (E_s/N_0)如果你在频域符号上做了功率归一化但在加噪声时用的是“信号功率为1”的假设那实际每个子载波上的接收SNR就和你的设定对不上。我常用的做法是在调制阶段用UnitAveragePower保证符号功率为1经过IFFT后时域信号功率理论上还是1帕塞瓦尔定理的离散形式所以加噪声时直接按awgn(tx_signal, snr_dB, measured)操作使用measured选项让MATLAB自行估计信号功率SNR定义就和调制符号对齐了。这种做法在链路仿真中足够准确但要注意如果你的后续链路里有脉冲整形滤波器、上采样或削波操作时域信号的峰均比会改变此时measured选项反而会引入误差需要改用手动功率估计。3. 同步与循环前缀设计让FFT窗口落在正确的位置3.1 符号定时偏移和载波频率偏移对OFDM的影响建模OFDM接收端最核心的操作不是FFT而是“怎么确定FFT窗口的起点”。和单载波系统不同OFDM对符号定时偏移STO的容忍度相当大——只要FFT窗口起点落在循环前缀范围内就不会产生符号间干扰和子载波间干扰只会引入一个固定的相位旋转。但这个“容忍度大”是有边界的边界条件可以从数学上精确描述。设FFT窗口起点相对于理想位置偏移了 (\delta) 个采样点且 (0 \le \delta \le N_{cp})那么在频域第k个子载波上接收到的符号为[ Y(k) X(k) e^{j2\pi k\delta / N} ]也就是说每个子载波上只多了一个随子载波索引线性变化的相位因子。这个相位因子在做判决时可以直接被星座图的旋转吸收或者在信道估计阶段被一并估计并消除。但如果 (\delta) 超出了循环前缀范围提前了或者推后了情况就完全不同FFT窗口会截取到相邻OFDM符号的一部分产生符号间干扰同时破坏子载波正交性产生子载波间干扰。此时误码率会出现明显的“地板效应”——无论信噪比怎么提高误码率都不再下降。载波频率偏移CFO的影响则更为复杂。若频偏为 (\Delta f)归一化频偏 (\varepsilon \Delta f / \Delta f_{subcarrier})接收端FFT输出的第k个子载波会收到来自所有其他子载波的泄漏[ Y(k) X(k) \cdot \frac{\sin(\pi\varepsilon)}{N\sin(\pi\varepsilon/N)} e^{j\pi\varepsilon(N-1)/N} ICI ]所以CFO的影响有两层一是有用信号的幅度衰减(\varepsilon0.1) 时衰减约1.5%二是其他子载波功率泄漏进来形成的ICI噪声。这就意味着即使你是做纯仿真也不能只做“理想同步”的仿真必须把这两种偏移建模进去否则信道的真实性能会被高估。3.2 循环前缀长度的选取依据与仿真中的信道时延建模循环前缀长度的选取依据只有一个最大时延扩展。但在仿真中这个“最大时延扩展”本身需要建模。常用做法是用一个抽头延迟线模型Tapped Delay Line, TDL来表示多径信道每一条路径有独立的时延和平均功率。在一个典型的室内场景仿真里时延扩展可能在50-100ns室外宏小区场景可能在几百纳秒到几微秒。当采样率确定后时延扩展对应的采样点数 时延 × 采样率。假设采样率为20MHz采样周期50ns那么100ns的时延扩展就是2个采样点500ns就是10个采样点。实际仿真中我一般这样设定先确定信道最大时延扩展为 ( \tau_{max} )再计算对应的采样点数 ( L \lceil \tau_{max} / T_s \rceil )然后让 ( N_{cp} L )。这里有一个常见的工程误区循环前缀并不是越大越好。CP本质上是冗余开销它不携带新信息只提供抗干扰保护。CP越长频谱效率损失越大频谱效率 ( N / (N N_{cp}) )所以在5G NR这类系统里CP长度和子载波间隔是绑定设计的——同样的时延扩展子载波间隔越大符号周期越短CP占比就越高频谱效率损失也越大。下面给出一个时延信道模型的MATLAB代码以及CP长度配置的参考表% 定义多径信道参数 path_delays [0 1 2] * 50e-9; % 三条路径时延0ns, 50ns, 100ns path_powers [0 -3 -6]; % 对应路径平均功率dB Ts 1 / 20e6; % 采样周期 50ns delay_samples round(path_delays / Ts); % 时延映射到采样点数 % 信道冲激响应离散 h zeros(max(delay_samples)1, 1); for p 1:length(path_delays) h(delay_samples(p)1) sqrt(10^(path_powers(p)/10)); end h h / norm(h); % 归一化信道能量 % 最小所需CP长度 max(delay_samples) N_cp_min max(delay_samples);这段代码的关键在于path_delays映射到采样点数后信道最大时延为max(delay_samples)个采样间隔所以CP最少要取这个值。注意delay_samples向上取整因为时延不一定恰好落在采样点上——真实信道中路径时延是连续值离散化后会有量化误差仿真中通常直接忽略这个误差但如果要做高精度链路验证则需要用更细的采样率。下面给一个参考试表说明不同场景下CP长度的量级选择场景最大时延扩展 (μs)子载波间隔 (kHz)符号周期 (μs)最小CP (μs)CP占比室内0.11566.70.7~1%城区51566.74.7~7%山区/大覆盖207.5133.320~15%5G NR扩展CP不适用1566.716.725%CP长度的最终确认原则是先测信道时延再定参数。如果仿真环境里没有真实的信道测量数据就扫几组不同的CP长度看误码率什么时候进入“地板区”那个临界值就是你的信道时延扩展上界。3.3 常用同步算法及其MATLAB实现循环前缀相关法实际工程里用得最多的OFDM粗同步方法是基于循环前缀的自相关法。原理很简单由于CP是OFDM符号尾部的复制接收信号中相隔N个采样点的两段数据在理想信道下完全相同。因此滑动计算延时相关值找到相关峰值出现的位置即为符号起点估计。MATLAB实现如下% 接收信号 rx_signal假设为时域复基带信号 % 参数NFFT点数N_cp循环前缀长度 L N_cp; % 相关窗口长度 CP长度 lambda zeros(length(rx_signal)-N-L, 1); for n 1:length(lambda) % 延时N个采样点后做相关累加 lambda(n) abs(sum(conj(rx_signal(n:nL-1)) .* rx_signal(nN:nNL-1))); end [~, est_peak] max(lambda); sync_point est_peak; % 符号起始点的粗估计这段代码的核心在lambda(n)的计算把接收信号从位置n开始的L个采样点和从位置nN开始的L个采样点做共轭相乘再求和。由于CP和符号尾部数据完全一致在无噪声无信道失真时这个相关值只有在窗口滑到CP区域附近时才达到峰值。需要说明的是这个算法在频率选择性信道下依然有效因为CP和尾部经历过相同的信道卷积仍然保持相关性。不过在噪声较大或者CP长度较短时相关峰会展宽、变钝此时需要结合门限判决而不是直接取最大值。该算法的MATLAB实现要注意两个细节。第一sum(conj(a).*b)比xcorr函数更快尤其在长序列下因为xcorr会计算完整的互相关函数而这里只需要延时N处的单点值。第二如果发送端存在多个OFDM符号接收信号的首尾都会受到影响所以要留出保护段不要让相关窗口滑出有效数据范围。这个算法得到的是粗同步精度在采样级如果系统对同步精度要求更高可以在此基础上做小数倍频偏估计或基于前导的精细同步。4. 信道估计与导频设计从LS估计到插值策略4.1 导频图案选择块状导频还是梳状导频OFDM系统在接收端做相干解调时必须知道每个子载波上的信道响应。获取方式无非两种一是用导频符号直接估计二是用盲估计方法。工程仿真中绝大多数链路选择的是导频方法而导频图案的选择直接影响信道估计的性能和开销。块状导频block pilot在时间方向上密集放置导频符号即某些OFDM符号全部用作导频适用于慢时变信道——信道在一个块内基本不变。梳状导频comb pilot在频率方向每隔几个子载波放一个导频适用于频率选择性强的信道——频率响应在导频间通过插值获得。实际LTE系统中使用的是离散导频scattered pilot结合了两种思路但仿真中最简单的开始点是块状导频它实现简单信道估计精度高且不涉及复杂的插值设计。4.2 最小二乘LS信道估计算法与MATLAB实现LS估计是工程中的默认起点。设接收导频符号为 (Y_p)发送导频符号为 (X_p)信道频率响应在导频位置上的LS估计为[ \hat{H}_p \frac{Y_p}{X_p} ]这个估计器不利用任何信道统计特性噪声方差就是估计误差方差所以在低信噪比下性能较差。但因为实现简单、不需要先验信息实际系统中普遍采用。收到完整OFDM符号并完成FFT后在导频位置做LS估计然后通过插值得到所有子载波上的信道响应。% 假设已经完成FFT得到频域接收符号 freq_rxN x num_symbols % 导频子载波索引 pilot_idx 1:4:N; % 每隔4个子载波放一个导频 data_idx setdiff(1:N, pilot_idx); % 已知的发送导频符号假设QPSK调制 pilot_tx pilot_matrix; % 发送导频的频域值尺寸 length(pilot_idx) x 1 % 提取接收导频并做LS估计 rx_pilot freq_rx(pilot_idx, :); H_est_pilot rx_pilot ./ pilot_tx; % 对每个OFDM符号做插值得到所有子载波的信道响应 H_est zeros(N, num_symbols); for sym 1:num_symbols H_est(:, sym) interp1(pilot_idx, H_est_pilot(:, sym), (1:N), linear, extrap); end这段代码的逻辑是从所有子载波中抽取导频位置的接收值除以已知导频符号得到导频处的信道估计然后对每个OFDM符号单独做插值。interp1中pilot_idx是插值节点H_est_pilot(:, sym)是节点处的值插值点为全部子载波索引插值方式为线性插值。这里两个容易踩的坑一是interp1的插值点必须在节点范围内所以需要用extrap选项处理边界二是当N较大而导频间隔较大时线性插值在频率选择性强的信道下误差大因为相邻导频之间的信道响应可能已经发生了显著变化。导频间隔的最大值由奈奎斯特采样定理在频域的对应给出导频间隔必须小于相干带宽的一半工程上通常取 (1/(2 \cdot \tau_{max} \cdot \Delta f)) 的倒数否则插值会出现混叠失真。4.3 导频开销与估计精度的权衡导频开销 导频子载波数 / 总子载波数。导频越多信道估计越准但可用于数据传输的资源越少。这个权衡在仿真中要量化评估导频间隔为4每4个子载波1个导频开销25%导频间隔为8开销12.5%导频间隔为16开销6.25%在仿真中我通常的做法是固定信道模型扫描导频间隔画出误码率曲线族找到“性能损失拐点”——导频间隔从8变成16时如果误码率性能下降超过0.5dB就说明导频太疏了如果从4变成8几乎没有变化说明导频过密浪费开销。这个分析过程本身就是OFDM系统仿真的重要产出远比单跑一条误码率曲线有价值。插值方式的影响也需要实测。线性插值适合子载波间隔较密、信道频率响应变化平缓的情形三次样条插值spline在导频间隔较大时能更好地逼近真实信道响应但计算量大、在低信噪比下可能放大噪声。实践中我建议折中导频间隔在8以内用线性插值足够导频间隔超过8时再考虑样条插值。5. 系统级仿真链路与误码率分析参数表的完整含义5.1 完整的MATLAB仿真链路框架把发射机、信道、接收机串成一个完整的误码率仿真脚本是OFDM系统仿真及分析的最终交付物。这个交付物的核心不是某一段代码而是“循环结构”——每一轮循环要独立完成一个OFDM符号从发到收的全流程并且循环之间信道要么重置、要么保证独立的随机实现。以下是完整链路的主循环骨架省略函数封装便于直接阅读逻辑% 主仿真循环 ber_results zeros(length(snr_dB), 1); for snr_idx 1:length(snr_dB) snr snr_dB(snr_idx); errors 0; total_bits 0; for sym_idx 1:num_symbols % 生成当前OFDM符号的随机比特 bits randi([0 1], N * log2(M), 1); % 调制 → IFFT → 加CP → 串行化 symbols qammod(bits, M, InputType, bit, UnitAveragePower, true); ifft_out ifft(symbols, N); tx_block [ifft_out(end-N_cp1:end); ifft_out]; % 多径信道卷积无噪声 rx_block conv(tx_block, h); % h为信道冲激响应 % 加高斯白噪声注意SNR定义与信号功率匹配 rx_noisy awgn(rx_block, snr, measured); % 接收端粗同步 → 去CP → FFT % 同步代码见3.3节这里简化为理想同步 rx_fft fft(rx_noisy(N_cp1:N_cpN), N); % 信道估计与均衡 % 插值估计代码见4.2节此处假设已知信道做迫零均衡 rx_eq rx_fft ./ fft(h, N); % 解调并统计误码 rx_bits qamdemod(rx_eq, M, OutputType, bit, UnitAveragePower, true); errors errors sum(bits ~ rx_bits); total_bits total_bits length(bits); end ber_results(snr_idx) errors / total_bits; end这个循环里没有用矩阵化批量处理因为逐符号循环更贴近实际系统的处理流程也便于在每一级插入调试打印。需要说明的是第12行的conv卷积会使信号长度变为N N_cp length(h) - 1所以接收端的同步和去CP操作必须知道信道的时延扩展否则FFT窗口位置会偏移。实测中如果你发现误码率在低SNR段就出现地板优先检查这里是否用了理想同步假设——理想同步在仿真中是合理的但要明确标注在分析结论中避免把“理想同步下的性能”误报为“完整系统的性能”。5.2 误码率曲线的正确解读多径信道下的信噪比定义误码率曲线的解读是整个分析的落点。首先要明确横轴代表什么 (E_b/N_0)每比特能量与噪声功率谱密度之比习惯上用于比较不同调制编码方式的性能(E_s/N_0)每符号能量与噪声功率谱密度之比则更接近物理接收机里的测量量。两者关系为 (E_s E_b \cdot \log_2 M)。在OFDM仿真中横轴还涉及一个容易被忽略的修正CP开销。如果你的发射能量是在包含CP的完整符号上计算的那么实际用于数据解调的有效能量只是其中的 (N/(NN_{cp}))。换言之同样的噪声功率下加CP的系统信噪比会损失 (10\log_{10}(N/(NN_{cp}))) dB。在仿真时有两种应对一是发射端在加CP后统一做功率归一化二是在SNR设定时将CP开销折算进 (E_b/N_0) 的定义。前者更贴近物理实现后者更贴近分析公式。建议在仿真脚本里固定使用第一种做法并在分析结果时标注CP开销的影响。5.3 仿真效率优化批处理与平均信道实现逐符号循环虽然清晰但在num_symbols很大、SNR扫描点数很多时会很慢。常用的加速手段有两个一是把多个OFDM符号组成一个“帧”一次性做IFFT和加CP利用矩阵运算代替循环二是在每个SNR点上对多个信道实现取平均而不是增加单个SNR点内的符号数。第二种方法在误码率较低时特别有效——比如目标误码率是1e-4如果一次信道实现只有10个符号统计到的误码可能为0误码率估计值为0这在log坐标下无法表示。正确的做法是设定“最少误码数”和“最大符号数”双重终止条件比如累计至少50个误比特才结束当前SNR点的仿真。6. 让仿真更接近实际系统多径信道影响CSIT反馈的三个落地技巧6.1 技巧一用误码率地板定位信道估计误差源当你发现高信噪比下误码率曲线变得平坦——不再下降——说明系统存在“地板”这类地板在OFDM仿真里有几个典型来源信道估计误差、相位噪声、载波频偏残余、信道时变引起的ICI。定位方法是一次只引入一个“非理想因素”保持其他模块理想。比如先跑理想信道估计再切到LS插值估计两条曲线的差距就是信道估计算法引入的损失。如果你发现地板在高SNR下依然存在且室内信道仿真中信道估计方式已经换成理想估计那问题大概率出在时变的信道响应上——信道在OFDM符号周期内发生了变化子载波正交性被破坏这不是提高SNR能解决的。6.2 技巧二在导频位置做线性插值后加一步频域平滑LS信道估计在低SNR下的噪声方差很大一个轻量但有效的改进是在插值之后、均衡之前对信道估计结果做频域滑动平均% 频域平滑信道估计 H_smooth H_est; for k 2:N-1 H_smooth(k) (H_est(k-1) H_est(k) H_est(k1)) / 3; end % 边界保持原值这三项平滑的代价几乎为零但能有效压低LS估计中的高频噪声分量。需要注意的是平滑窗口的宽度必须小于相干带宽对应的子载波数否则会把真实的信道频率选择性也平滑掉。当信道频率响应变化很快时这种方法还会带来系统性的估计偏差所以它只适合时延扩展较小相干带宽较宽的场景。在仿真中加不加这一步的对比恰好可以作为“信道估计误差对系统性能影响”的一个定量分析点。6.3 技巧三把误码率曲线与理论值对齐作为判笃的调试手段调试OFDM仿真链路的最快方式不是一句一句审查代码逻辑而是在理想信道AWGN无多径下跑一条理论误码率曲线和你的系统仿真曲线对比。在理想信道且无CP开销损耗时OFDM系统的误码率应该与理论值完全重合因为子载波之间正交不产生任何干扰。如果对不齐问题在调制解调链路本身如果在多径信道下对不齐问题在同步、信道估计或均衡环节。这个步骤建议在写完整链路之前先做——先用最简单的点对点AWGN信道验证QAM调制解调和误码率统计代码的正确性再逐步加入多径、加入信道估计、加入同步。每一步只加一个变量出问题时才能精准定位。我见过太多人在完整链路里找bug找到崩溃最后发现是第一行的调制函数用错了参数格式。真正有价值的OFDM仿真分析不是把代码跑通画出曲线就结束而是通过可控变量的对比实验把每个模块的性能边界和参数影响量化出来。这篇文章里给出的代码片段组合起来就是一个可扩展的仿真底座后续接入LDPC编解码、MIMO检测、自适应调制或者PAPR抑制算法都不需要改动发射机和信道框架本身。本文还有配套的精品资源点击获取
RELATED

相关推荐

Harmony鸿蒙实战开发-博客新闻app「首页、广场、体系、公众号、我的、登录注册、并可收藏进行查看」【源码在文末】

Harmony鸿蒙实战开发-博客新闻app「首页、广场、体系、公众号、我的、登录注册、并可收藏进行查看」【源码在文末】

Harmony鸿蒙实战开发-博客新闻app「首页、广场、体系、公众号、我的、登录注册、并可收藏进行查看」【源码在文末】 文章目录Harmony鸿蒙实战开发-博客新闻app「首页、广场、体系、公众号、我的、登录注册、并可收藏进行查看」【源码在文末】一、运行演示1、首页2、广场3、体系…

📅 2026/9/18 14:00:23
AMCT PyTorch 蒸馏量化接口 create_distill_model 完全指南:将浮点模型改造为可蒸馏的量化压缩模型

AMCT PyTorch 蒸馏量化接口 create_distill_model 完全指南:将浮点模型改造为可蒸馏的量化压缩模型

AMCT PyTorch 蒸馏量化接口 create_distill_model 完全指南:将浮点模型改造为可蒸馏的量化压缩模型 【免费下载链接】amct AMCT是CANN提供的昇腾AI处理器亲和的模型压缩工具仓。 项目地址: https://gitcode.com/cann/amct 导读 本文介绍 CANN AMCT&#xff…

📅 2026/9/18 14:00:23
Nacos 适配达梦和人大金仓:国产数据库方言与SPI插件落地

Nacos 适配达梦和人大金仓:国产数据库方言与SPI插件落地

1. 为什么 Nacos 原生跑不起来达梦和人大金仓先说结论:Nacos 的配置中心和命名空间元数据是持久化到关系型数据库里的,而官方只给了 Derby 和 MySQL 两套方案。Derby 是内嵌的,只在单机演示场景下用;真正上生产基本都是 MySQL。问…

📅 2026/9/18 13:55:23
MORE NEWS

更多资讯

📰

MiroFish:基于 Miro Web SDK 的协作白板多人养鱼应用

第一次看到 MiroFish 这个名字,我脑子里蹦出来的第一反应是"这玩意儿大概是把白板当鱼缸养鱼"。后来跟几个做团队协作工具的朋友聊过之后,发现这个判断基本没错,而且它比想象中更有嚼头。MiroFish 是一套跑在协作白板上的多人养鱼互…

📰

基于BP神经网络与SVM的生物炭土壤水分预测建模与MATLAB实现

简介:针对半干旱区施加生物炭后土壤水分预测这一农业水资源管理问题,一份学术论文PDF系统比较了BP神经网络与SVM支持向量机两种建模方案的适用性。文档以黄土高原固原生态站小区定位试验为基础,介绍了不同种类与比例生物炭施加处理下的土壤含…

📰

flutter doctor 检查不过?Cursor 的模型通道改走 TaoToken 再排查鸿蒙环境

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

镜筒量产平面度一致性偏差:光学轮廓仪诊断与工艺整治

第一批首件上光学轮廓仪,端面平面度 0.72 μm,图纸公差 2 μm,余量看着很舒服。我当时心里是稳的。结果连续做完 50 件,抽检的时候有 11 件落在 1.8 μm 到 3.1 μm 之间,同一件拆下来重新装夹再测,数字又变…

📰

WinPE环境下360系统急救箱深度技术解析

1. 项目概述:为什么非得在WinPE里跑360系统急救箱?你有没有遇到过这种情况:电脑一开机就卡在蓝屏,或者刚进桌面就弹出一堆广告窗口,任务管理器打不开,杀毒软件根本启动不了——这时候你心里清楚&#xff0c…

📰

5分钟上手Swift编程语言中文版:DocC本地预览与快速开始教程

5分钟上手Swift编程语言中文版:DocC本地预览与快速开始教程 【免费下载链接】the-swift-programming-language-in-chinese 中文版 Apple 官方《Swift 编程语言》 项目地址: https://gitcode.com/gh_mirrors/th/the-swift-programming-language-in-chinese 本…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬