首页/文章/ 详情

射频进阶——MATLAB仿真之DPD代码

1年前浏览1890

前面我发过一篇DPD的过程解析,很多朋友都很感兴趣。问我要仿真代码

前段时间一直忙,一直没有时间整理。周末得空整理了一下。

射频进阶——数字预失真DPD过程解析

其实仿真的代码不难,难的是对DPD实现过程的理解。

如上文所讲,DPD仿真最关键的是功放模型的获取及功放数据的导入。其他的记忆深度可以通过经验调整。(仅代表本人的理解)

代码如下,大家可以加载一下试试。

load('simrfV2_powamp_dpd_data.mat')

DataRate = 15.36e6;

Tstep = 1/DataRate;

memLen = 3;               %记忆长度3

degLen = 7;                  %深度7  凭经验

numDataPts = length(inDataPA);


halfDataPts = round(numDataPts/2);  %只有一半的数用于计算



modType = 'memPoly';            

fitCoefMat = simrfV2_powamp_dpd_helper('coefficientFinder',             ...

    inDataPA(1:halfDataPts),outDataPA(1:halfDataPts),memLen,degLen,modType);           %返回矩阵


[errSig] = simrfV2_powamp_dpd_helper('errorMeasure',                    ...

    inDataPA, outDataPA, fitCoefMat, modType);

disp(['Signal standard deviation = ' num2str(errSig) '%'])       %验证拟合,用辅助函数来计算偏差//


modType = 'ctMemPoly';

fitCoefMat = simrfV2_powamp_dpd_helper('coefficientFinder',             ...

    inDataPA(1:halfDataPts),outDataPA(1:halfDataPts),memLen,degLen,modType);    %用交叉记忆模型来改进拟合


[errSig] = simrfV2_powamp_dpd_helper('errorMeasure',                    ...

    inDataPA, outDataPA, fitCoefMat, modType);

disp(['Signal standard deviation = ' num2str(errSig)])


save('PAcoefficients.mat','fitCoefMat')



model = 'simrfV2_powamp_dpd';

open_system(model)

sim(model)


来源:RF通信
MATLAB
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2023-09-02
最近编辑:1年前
匹诺曹
签名征集中
获赞 6粉丝 33文章 90课程 0
点赞
收藏
未登录
1条评论
Silk
签名征集中
3月前
simrfV2_powamp_dpd_data.mat文件没有怎么办
回复
课程
培训
服务
行家
VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈