👨🎓个人主页:研学社的博客
💥💥💞💞欢迎来到本博客❤️❤️💥💥
🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。
⛳️座右铭:行百里者,半于九十。
📋📋📋本文目录如下:🎁🎁🎁
目录
💥1 概述
文献来源:
提出了一种新型盲源分离方法。
在结构动力分析中,盲源分离( Blind Source Separation,BSS )技术被认为是模态识别最有效的方法之一,其中如何利用有限的传感器提取模态参数是该领域极具挑战性的任务。在本文中,我们首先回顾了传统BSS方法的缺点,然后提出了一种新的欠定BSS方法来解决有限传感器的模态识别问题。模态响应信号的(所提方法建立在时频( Time-Frequency , TF )聚类特征上)变换。研究发现,属于不同单调模态的TF能量可以聚类成不同的直线。同时,我们给出了详细的定理来解释聚类特征。此外,每个模态的TF系数被用来重建所有单调信号,这有助于单独识别模态参数。在实验验证中,通过两个实验验证了所提方法的有效性。
📚2 运行结果
2.1 算例1
2.2 算例2
2.3 算例3
部分代码:
function [x,t] = tfristft(tfr,t,h,trace);
%TFRISTFT Inverse Short time Fourier transform.
% [X,T]=TFRSTFT(tfr,T,H,TRACE) computes the inverse short-time
% Fourier transform of a discrete-time signal X. This function
% may be used for time-frequency synthesis of signals.
%
% X : signal.
% T : time instant(s) (default : 1:length(X)).
% H : frequency smoothing window, H being normalized so as to
% be of unit energy. (default : Hamming(N/4)).
% TRACE : if nonzero, the progression of the algorithm is shown
% (default : 0).
% TFR : time-frequency decomposition (complex values). The
% frequency axis is graduated from -0.5 to 0.5.
%
% Example :
% t=200+(-128:127); sig=[fmconst(200,0.2);fmconst(200,0.4)];
% h=hamming(57); tfr=tfrstft(sig,t,256,h,1);
% sigsyn=tfristft(tfr,t,h,1);
% plot(t,abs(sigsyn-sig(t)))
%
if (nargin<3),
error('At least 3 parameters required');
elseif (nargin==3),
trace=0;
end;
[N,NbPoints]=size(tfr);
[trow,tcol] =size(t);
[hrow,hcol] =size(h); Lh=(hrow-1)/2;
if (trow~=1),
error('T must only have one row');
elseif (hcol~=1)|(rem(hrow,2)==0),
error('H must be a smoothing window with odd length');
elseif (tcol~=NbPoints)
error('tfr should have as many columns as t has rows.');
end;
Deltat=t(2:tcol)-t(1:tcol-1);
Mini=min(Deltat); Maxi=max(Deltat);
if (Mini~=1) & (Maxi~=1),
error('The tfr must be computed at each time sample.');
end;
h=h/norm(h);
tfr=ifft(tfr);
x=zeros(tcol,1);
for icol=1:tcol,
valuestj=max([1,icol-N/2,icol-Lh]):min([tcol,icol+N/2,icol+Lh]);
for tj=valuestj,
tau=icol-tj; indices= rem(N+tau,N)+1;
% fprintf('%g %g %g\n',tj,tau,indices);
x(icol,1)=x(icol,1)+tfr(indices,tj)*h(Lh+1+tau);
end;
x(icol,1)=x(icol,1)/sum(abs(h(Lh+1+icol-valuestj)).^2);
end;
function [tfr,t,f] = tfrstft(x,t,N,h,trace);
%TFRSTFT Short time Fourier transform.
% [TFR,T,F]=TFRSTFT(X,T,N,H,TRACE) computes the short-time Fourier
% transform of a discrete-time signal X.
%
% X : signal.
% T : time instant(s) (default : 1:length(X)).
% N : number of frequency bins (default : length(X)).
% H : frequency smoothing window, H being normalized so as to
% be of unit energy. (default : Hamming(N/4)).
% TRACE : if nonzero, the progression of the algorithm is shown
% (default : 0).
% TFR : time-frequency decomposition (complex values). The
% frequency axis is graduated from -0.5 to 0.5.
% F : vector of normalized frequencies.
%
% Example :
% sig=[fmconst(128,0.2);fmconst(128,0.4)]; tfr=tfrstft(sig);
% subplot(211); imagesc(abs(tfr));
% subplot(212); imagesc(angle(tfr));
%
[xrow,xcol] = size(x);
if (nargin < 1),
error('At least 1 parameter is required');
elseif (nargin <= 2),
N=xrow;
end;
hlength=floor(N/4);
hlength=hlength+1-rem(hlength,2);
if (nargin == 1),
t=1:xrow; h = tftb_window(hlength); trace=0;
elseif (nargin == 2) | (nargin == 3),
h = tftb_window(hlength); trace = 0;
elseif (nargin == 4),
trace = 0;
end;
if (N<0),
error('N must be greater than zero');
end;
[trow,tcol] = size(t);
if (xcol~=1),
error('X must have one column');
elseif (trow~=1),
error('T must only have one row');
end;
[hrow,hcol]=size(h); Lh=(hrow-1)/2;
if (hcol~=1)|(rem(hrow,2)==0),
error('H must be a smoothing window with odd length');
end;
h=h/norm(h);
tfr= zeros (N,tcol) ;
for icol=1:tcol,
ti= t(icol); tau=-min([round(N/2)-1,Lh,ti-1]):min([round(N/2)-1,Lh,xrow-ti]);
indices= rem(N+tau,N)+1;
tfr(indices,icol)=x(ti+tau,1).*conj(h(Lh+1+tau));
end;
tfr=fft(tfr);
if (nargout==0),
tfrqview(abs(tfr).^2,x,t,'tfrstft',h);
elseif (nargout==3),
if rem(N,2)==0,
f=[0:N/2-1 -N/2:-1]'/N;
else
f=[0:(N-1)/2 -(N-1)/2:-1]'/N;
end;
end;
🎉3 参考文献
部分理论来源于网络,如有侵权请联系删除。