✨ 长期致力于空域合成发射机、数字预失真、信号分离、分段模型研究工作擅长数据搜集与处理、建模仿真、程序编写、仿真设计。✅ 专业定制毕设、代码✅如需沟通交流点击《获取方式》1基于部分传输序列和固定门限的双模式信号分离方案针对空域合成发射机中两路功放的效率与线性矛盾提出一种自适应信号分离策略。当系统要求频谱利用率高于5bit/s/Hz时采用基于部分传输序列PTS的信号分离将OFDM符号分割为4个子块每个子块旋转相位因子{±1,±j}选择使峰均比PAPR最低的组合分离后的两路信号分别驱动主功放和峰功放。当频谱效率要求较低时采用固定门限分离门限值设置为PAPR的1.2倍低于门限的信号进入主路高于门限的进入峰路。在Matlab与ADS联合仿真中使用40MHz 64QAM OFDM信号固定门限法使系统合成效率从原始60.2%提升至76.3%PTS法提升至72.5%。主路功放设计为Class AB峰路为Class C主路输出1dB压缩点46dBm峰路42dBm。实测中PTS法引入的额外计算延迟为1.2μs对于40MHz带宽可接受。2基于K-means聚类的幅度分段数字预失真模型分析双路空域合成发射机中主功放和峰功放的非线性特性发现其AM-AM曲线呈现多段斜率变化。采用K-means算法对输入信号幅度进行聚类类别数K根据信息准则BIC选定为5。每个分段区间独立建立记忆多项式模型记忆深度3非线性阶数5。分段模型的总参数为5*5*375个对比广义记忆多项式GMP模型参数128个复杂度降低41%。在功放建模精度上主路NMSE从-37.2dB提升至-40.7dB峰路从-32.5dB提升至-37.9dB。使用30组不同相位的测试集验证平均NMSE优于-39dB。预失真器采用间接学习结构迭代4次收敛。对40MHz信号进行线性化后邻道功率比ACPR从-43dBc改善至-51dBc。FPGA实现中分段查找表为5x64深度资源占用减少30%。3基于功率分布效率预测的VSG-FSW双路测试平台验证提出一种基于功率概率密度函数的合成效率预测方法不需要实际搭建双路功放即可预估系统效率。方法计算输入信号的幅度分布直方图分区段统计概率利用单路功放的饱和特性曲线分段求积分得到两路合成后的总效率。在MATLAB中验证预测效率与实际测量误差小于2.5%。搭建基于Rohde Schwarz VSG矢量信号发生器和FSW信号与频谱分析仪的实测平台VSG产生40MHz 64QAM OFDM信号经过FPGA实现的分段预失真后送入双路功放使用GaN HEMT器件主路CGH40010峰路CGH40006。测量结果显示采用整体矫正方案同时矫正两路失真EVM为0.98%ACPR为-48.7dBc单路独立矫正时EVM 0.56%但ACPR略差。系统在输出总功率43dBm时合成效率达到68%固定门限方案。温度25-85度范围内ACPR波动小于2dB。import numpy as np from sklearn.cluster import KMeans from scipy.signal import savgol_filter def pts_signal_separation(ofdm_symbol, num_subblocks4): # ofdm_symbol: complex array (Nsamples) sub_len len(ofdm_symbol) // num_subblocks phases np.array([[1,0], [-1,0], [0,1j], [0,-1j]]) best_combination None min_papr float(inf) for comb in range(4**num_subblocks): rotated np.zeros_like(ofdm_symbol) for b in range(num_subblocks): phase phases[ (comb (2*b)) 3 ] rotated[b*sub_len:(b1)*sub_len] ofdm_symbol[b*sub_len:(b1)*sub_len] * phase[0] phase[1] papr 10*np.log10(np.max(np.abs(rotated)**2) / np.mean(np.abs(rotated)**2)) if papr min_papr: min_papr papr best_combination rotated # 分离门限1.2倍平均幅度 threshold 1.2 * np.mean(np.abs(best_combination)) main_path np.where(np.abs(best_combination) threshold, best_combination, 0) peak_path np.where(np.abs(best_combination) threshold, best_combination, 0) return main_path, peak_path def kmeans_segmented_model(am_am_data, n_segments5, mem_depth3, poly_order5): amplitudes np.abs(am_am_data[:,0]) kmeans KMeans(n_clustersn_segments, random_state0).fit(amplitudes.reshape(-1,1)) cluster_centers kmeans.cluster_centers_.flatten() cluster_labels kmeans.labels_ models [] for k in range(n_segments): idx_k np.where(cluster_labels k)[0] if len(idx_k) mem_depth * poly_order: continue # 构建记忆多项式回归矩阵 x am_am_data[idx_k, 0] y am_am_data[idx_k, 1] P [] for i in range(len(x)): row [] for m in range(mem_depth): for p in range(1, poly_order1, 2): row.append( (abs(x[i-m]) if i-m0 else 0)**p * x[i-m] ) P.append(row) coeffs np.linalg.lstsq(np.array(P), y, rcondNone)[0] models.append(coeffs) return models, cluster_centers def efficiency_prediction(amplitude_dist, pa_sat_power, pa_efficiency_curve): # amplitude_dist: histogram bin centers and probabilities bin_centers, probs amplitude_dist total_power 0 total_dc 0 for amp, prob in zip(bin_centers, probs): if amp pa_sat_power: p_out amp**2 / 50 # 假设50 Ohm eff pa_efficiency_curve(amp) else: p_out pa_sat_power**2/50 eff pa_efficiency_curve(pa_sat_power) total_power p_out * prob total_dc (p_out/eff) * prob return total_power / total_dc if total_dc0 else 0 def pa_efficiency_curve_example(amp_in): return 0.65 * (1 - np.exp(-amp_in/0.3)) if __name__ __main__: test_signal np.random.randn(1024) 1j*np.random.randn(1024) main, peak pts_signal_separation(test_signal) # 模拟AM-AM数据 am_data np.column_stack([np.abs(main), np.abs(peak) 0.02*np.random.randn(len(main))]) models, centers kmeans_segmented_model(am_data, n_segments5) eff efficiency_prediction((np.linspace(0,1,20), np.ones(20)/20), 0.8, pa_efficiency_curve_example) print(f预测效率: {eff:.3f})