✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。
🍎个人主页:Matlab科研工作室
🍊个人信条:格物致知。
更多Matlab仿真内容点击👇
⛄ 内容介绍
随着现代通信技术的发展,无线电技术已经深入到社会的各个领域.用户对高速无线传输技术的需求越来越多.这使得信号传输带宽变宽,频点也越来越复杂.实时感知当前频谱占用情况进而采取动态接入的方式是解决当前频谱资源匮乏的重要手段.根据传统奈奎斯特采样定理,若要无混叠的得到宽带内信号的频谱,则需要极高的采样率以及较强的数字信号处理能力.
⛄ 部分代码
function [Xr, Supp, ResNorm, NormResvsSol] = RunOMP_Unnormalized(Y,A,NumIters, ResThreshold, ResvsSolThreshold, SymmetricSupport)
% OMP alogrithm for MMV/SMV: Y=AX
% This function returns a solution Xr together with the support (Supp)
% The termination criteria are:
% Stop if more than NumIters iterations
% Stop if residual norm is greater than ResThreshold
% Stop if the ratio between residual norm and the norm of the current solution is greater than ResvsSolThreshold
% If SymmetricSupport is true, then the algorithm select pairs of indices every
% iteration, such that the indices are symettric with respect to solution
% dimensions (special feature for conjugate symmetric solutions).
[mA,nA] = size(A);
[mY,nY] = size(Y);
residual = Y;
Supp = [];
iter = 1;
resnorm = norm(Y);
resvssolnorm = inf;
NormACols = sqrt(diag(A'*A));
while ( (iter <= NumIters) && (resnorm > ResThreshold) && (resvssolnorm > ResvsSolThreshold))
% Matching step
Z_1 = A'*residual;
Z = sqrt(sum(abs(Z_1).^2,2))./NormACols;
[maxVal, maxPos] = max(Z);
BestLoc = maxPos(1);
% Update support
Supp = [Supp BestLoc];
if (SymmetricSupport == true)
SymmetricLoc = (nA+1-BestLoc);
if (BestLoc ~= SymmetricLoc)
Supp = [Supp SymmetricLoc];
end
end
% Project residual
As = A(:,Supp);
solution = As*pinv(As)*Y;
residual = Y-solution;
% update norms
resnorm = norm(residual);
resvssolnorm = resnorm/norm(solution);
ResNorm(iter) = resnorm;
NormResvsSol(iter) = resvssolnorm ;
% increment iter number
iter = iter+1;
end
% Construct solution
Xr = zeros(nA,nY);
Xr(Supp,:) = pinv(As)*Y;
⛄ 运行结果
⛄ 参考文献
[1]王盟皓, 侯训平, 陆铁军. 基于Matlab的宽带连续时间Sigma-Delta调制器设计[J]. 微电子学与计算机, 2020, 37(6):5.
⛳️ 完整代码
❤️部分理论引用网络文献,若有侵权联系博主删除
❤️ 关注我领取海量matlab电子书和数学建模资料