基于LSCF和LSFD算法在频域中识别快速实现的MIMO研究附Matlab代码

简介: 基于LSCF和LSFD算法在频域中识别快速实现的MIMO研究附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。

🍎个人主页:Matlab科研工作室

🍊个人信条:格物致知。

更多Matlab仿真内容点击👇

智能优化算法  神经网络预测雷达通信 无线传感器

信号处理图像处理路径规划元胞自动机无人机 电力系统

⛄ 内容介绍

该工具允许使用 MIMO 系统的复杂频率响应函数 (FRF) 来识别模态参数、特征频率、模态阻尼因子和模态留数。使用基于fft的正规方程的快速实现来解决最小二乘问题,以提高算法的效率。

⛄ 部分代码

function [fn, xin, frfnumtot, FST, FF, XIXI, MATHP] = lscf(w, frf, n)

% Linear Square Complex Frequency estimator using discrete-time z-model

%    

%             k=n

%            -----

%            \         k  

%            .     A z

%            /      

%            -----

%             k=0                            j k w dt

% H(z) = -------------------------,    z = e

%             k=n

%            -----

%            \         k    

%            .     B z

%            /      

%            -----

%             k=0

%

% the frequency axis between f0 and fend is shifted using

%

%             1

% dt = --------------

%       2 (fend - f0)

%

% w = 2 pi (f - f0)

%

% w          natural frequency vector in rad/s

% frf        complex frequency response function matrix

%            each column corresponds to one FRF between one sensor

%            and one actuator

% n          [nmin : nmax] identification using stabilization chart

%

% fn         eigen frequency in Hz

% xin        modal damping factor

% frfnumtot  matrix with numerical identified complex frequency response

%            function using discrete-time z-model

% FST        cell array with frequency of stable poles in frequency and damping

% FF         cell array with frequency of stable poles in frequency

% XIXI       cell array with frequency of stable poles in damping

% MATHP      cell array with frequency of mathematical poles

%

% References:

% H. Van der Auweraer, P. Guillaume, P. Verboven and S. Vanlanduit, Application

% of a  Fast-Stabilizing Frequency Domain Parameter Estimation Method,

%Journal of Dynamics Systems, Measurement and Control, 123, pp 651-658, 2001.

%


%% Parameters and frequency shift

w0 = w ; % natural frequency in rad/s

L = length(w) ; % length of the signal

f = w/(2*pi) ; % frequency in Hz

yfrftot = 20*log10(abs(frf)) ;

f0 = min(f) ;

fend = max(f) ;

w = 2*pi*(f-f0) ; % shifted natural frequency

dt = 1/(2*(fend-f0)) ; % sample time

[L , noni] = size(frf) ; % noni: number output * number input


% cell array to save frequency of stable poles in frequency and damping

% at each iteration

FST = {} ; FF = {}; XIXI = {}; MATHP = {} ;

frfnumtot = zeros(L, noni) ;


disp('-----------------------------------------')

disp(['Identification between order ',num2str(n(1)),' and ',num2str(n(end))])

disp('-----------------------------------------')

n_min = min(n) ;

n_max = max(n) ;

Ptot = zeros(L, n_max+1) ;

for k=1:n_max+1

   % matrix P for normal equations using z-domain model

   Ptot(:, k) = zdomain(w, dt, k-1) ;

end


ip = 0 ;

iFST = 1 ;


%% fast implementation of normal equations using fft

% fft are padded with zeros because 2*L > L and dt=1/(2(fend-f0))

X1 = fft(frf, 2*L) ;

X2 = fft(conj(frf), 2*L) ;

% correction to avoid warning on the first term of the toeplitz matrices

X2(1,:)= X1(1,:) ;

Y1 = fft(ones(L,1), 2*L) ;

Z1 = fft(abs(frf).^2, 2*L) ;


%% calcul between n_min and n_max

P = Ptot(:, 1:n_min) ;

for p = n_min:n_max

   fn = [] ;

   xin = [] ;

   ff = [] ;

   xixi = [] ;

   mathp = [] ;


   P = cat(2, P, Ptot(:,p+1)) ;


   Xtot = {} ;

   Ytot = {} ;

   Ztot = {} ;

   Atot = {} ;


   M = zeros(p+1, p+1) ;


   % fast implementation using toeplitz matrix

   for ifrf = 1:noni

       X = toeplitz(-real(X1(1:p+1, ifrf)), -real(X2(1:p+1, ifrf).')) ;

       Y = toeplitz(real(Y1(1:p+1))) ;              

       Z = toeplitz(real(Z1(1:p+1, ifrf))) ;

       Xtot{ifrf} = X ; Ytot{ifrf} = Y ; Ztot{ifrf} = Z ;

       Mifrf = Z - X'*Y^(-1)*X ;

       M = M + Mifrf ;

   end

   M = 2*M ;

   B = lsqminnorm(-M(1:p, 1:p), M(1:p, p+1)) ;

   B = [B; 1] ;

   % calcul of frfnumtot only for the last iteration

   if p == n_max

       for ifrf = 1:1:noni

           Atot{ifrf} = -lsqminnorm(Ytot{ifrf},(Xtot{ifrf}*B)) ;

           frfnumtot(:,ifrf) = (P*Atot{ifrf})./(P*B) ;

       end

   end

   % solve eigenvalue problem using companion matrix

   poles = companion2poles(B, p, dt) ;

   % modal parameters

   wp = abs(poles) ;

   % correction of the shift frequency

   wp = wp+2*pi*f0 ;

   xip = -real(poles)./wp ;

   % reorganize modal parameters

   [wp, iwp] = sort(wp) ;

   xip = xip(iwp) ;

   fp = wp/(2*pi) ;

   % stabilization chart

   if ip == 0

       fmin1 = fp ;

       ximin1 = xip ;

   elseif ip > 0

       [fn, xin, ff, xixi, mathp] = stabchart(fp, xip, fmin1, ximin1, ...

       f, fn, xin, ff, xixi, mathp, p) ;

       xin = xin' ;

       fmin1 = fp ;

       ximin1 = xip ;

       FST{iFST} = fn ; FF{iFST} = ff ; XIXI{iFST} = xixi ;

       MATHP{iFST} = mathp ;

       iFST = iFST+1 ;

   end

   ip = ip+1 ;

end


%% axes, label of the figure

xlim([f0 fend*(1+5/100)])

ylim([min(min(yfrftot)) max(max(yfrftot))])

xlabel('Frequency (Hz)')

ylabel('FRF (dB)')


⛄ 运行结果

⛄ 参考文献

[1]王艺衡. 基于MIMO-OFDM系统的信道估计算法研究与实现[D]. 西安电子科技大学.

⛄ Matlab代码关注

❤️部分理论引用网络文献,若有侵权联系博主删除
❤️ 关注我领取海量matlab电子书和数学建模资料


相关文章
|
1月前
|
算法 5G 数据安全/隐私保护
基于MIMO系统的PE-AltMin混合预编码算法matlab性能仿真
本文介绍了基于交替最小化(AltMin)算法的混合预编码技术在MIMO系统中的应用。通过Matlab 2022a仿真,展示了该算法在不同信噪比下的性能表现。核心程序实现了对预编码器和组合器的优化,有效降低了硬件复杂度,同时保持了接近全数字预编码的性能。仿真结果表明,该方法具有良好的鲁棒性和收敛性。
47 8
|
1月前
|
存储 算法 程序员
C 语言递归算法:以简洁代码驾驭复杂逻辑
C语言递归算法简介:通过简洁的代码实现复杂的逻辑处理,递归函数自我调用解决分层问题,高效而优雅。适用于树形结构遍历、数学计算等领域。
|
2月前
|
并行计算 算法 测试技术
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面,旨在通过综合策略提升程序性能,满足实际需求。
79 1
|
2月前
|
存储 缓存 算法
通过优化算法和代码结构来提升易语言程序的执行效率
通过优化算法和代码结构来提升易语言程序的执行效率
|
2月前
|
算法
分享一些提高二叉树遍历算法效率的代码示例
这只是简单的示例代码,实际应用中可能还需要根据具体需求进行更多的优化和处理。你可以根据自己的需求对代码进行修改和扩展。
|
2月前
|
机器学习/深度学习 算法 5G
基于MIMO系统的SDR-AltMin混合预编码算法matlab性能仿真
基于MIMO系统的SDR-AltMin混合预编码算法通过结合半定松弛和交替最小化技术,优化大规模MIMO系统的预编码矩阵,提高信号质量。Matlab 2022a仿真结果显示,该算法能有效提升系统性能并降低计算复杂度。核心程序包括预编码和接收矩阵的设计,以及不同信噪比下的性能评估。
66 3
|
2月前
|
算法 测试技术 开发者
在Python开发中,性能优化和代码审查至关重要。性能优化通过改进代码结构和算法提高程序运行速度,减少资源消耗
在Python开发中,性能优化和代码审查至关重要。性能优化通过改进代码结构和算法提高程序运行速度,减少资源消耗;代码审查通过检查源代码发现潜在问题,提高代码质量和团队协作效率。本文介绍了一些实用的技巧和工具,帮助开发者提升开发效率。
57 3
|
2月前
|
分布式计算 Java 开发工具
阿里云MaxCompute-XGBoost on Spark 极限梯度提升算法的分布式训练与模型持久化oss的实现与代码浅析
本文介绍了XGBoost在MaxCompute+OSS架构下模型持久化遇到的问题及其解决方案。首先简要介绍了XGBoost的特点和应用场景,随后详细描述了客户在将XGBoost on Spark任务从HDFS迁移到OSS时遇到的异常情况。通过分析异常堆栈和源代码,发现使用的`nativeBooster.saveModel`方法不支持OSS路径,而使用`write.overwrite().save`方法则能成功保存模型。最后提供了完整的Scala代码示例、Maven配置和提交命令,帮助用户顺利迁移模型存储路径。
|
3月前
|
机器学习/深度学习 人工智能 自然语言处理
计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-19
计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-19
80 3
|
3月前
|
存储 人工智能 算法
计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-13(上)
计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-13(上)
55 2

热门文章

最新文章