⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sea_cond.m

📁 信号测量时
💻 M
字号:
 % SEA-COND方法(SEA为 Sensor Elimination Algorithm, 即传感器淘汰算法,COND为条件数, Condition number):
 % 直接计算模态矩阵 A 的条件数(Condition number), cond(A)
 % 模态矩阵 A 相当于是由候选传感器“测量”的模态矩阵。
 % 当前要淘汰的传感器(自由度)是按下列方式确定的:
 % 轮流删除每个传感器,即模态矩阵 A 中的每一行,然后,计算模态矩阵 A 的条件数 cond(A),
 % 哪一种删除所产生的条件数cond(A)值最小,那么,相应的传感器就是本轮要淘汰的对象。
 
clear;
%============================ can be updated by user===================================================================
modal=[0.0157    0.0302   -0.0422   -0.0506    0.0545    0.0532   -0.0463    0.0343    0.0183
       0.0299    0.0488   -0.0496   -0.0313   -0.0000   -0.0329    0.0545   -0.0556   -0.0348
       0.0411    0.0488   -0.0161    0.0313   -0.0545   -0.0329   -0.0177    0.0556    0.0479
       0.0483    0.0302    0.0306    0.0506    0.0000    0.0532   -0.0337   -0.0343   -0.0563
       0.0508   -0.0000    0.0521   -0.0000    0.0545    0.0000    0.0573    0.0000    0.0592
       0.0483   -0.0302    0.0306   -0.0506    0.0000   -0.0532   -0.0337    0.0343   -0.0563
       0.0411   -0.0488   -0.0161   -0.0313   -0.0545    0.0329   -0.0177   -0.0556    0.0479
       0.0299   -0.0488   -0.0496    0.0313   -0.0000    0.0329    0.0545    0.0556   -0.0348
       0.0157   -0.0302   -0.0422    0.0506    0.0545   -0.0532   -0.0463   -0.0343    0.0183];
      %Modal Matrix中振型向量按列放置,不要求一定是方阵
n=9;          %n-measured DOF,
m1=2;m2=2;    %m1,m2-modal order numbers between which the mode shapes are concerned, set by user
%===================================================================================================================
m=m2-m1+1;    %m-number of concerned modes 
a(1:n,1:m)=modal(1:n,m1:m2);
nj=n;
priority(1:n)=0;

for j=1:1:n %轮次
   for i=1:1:nj %轮流删除每个自由度,同时计算每种删除所产生的行列式的值.删掉第i自由度的方式是将第i行从a中挤出,新矩阵记为ai
      for k=1:1:i-1
         ai(k,1:m)=a(k,1:m);    %i行以前不变
      end
      for k=i:1:nj-1             %i行以后均提前一行
         ai(k,1:m)=a(k+1,1:m);
      end
      d(i)=cond(ai,2);         %计算模态矩阵 Ai 的条件数
   end
   d  %本轮完成后,显示各淘汰方式的条件数的值
   %找出本轮中各条件数的最小值,然后记下其对应的自由度号
   dmin=1e100;imin=0;
   for i=1:1:nj
      if d(i)<dmin
         dmin=d(i);
         imin=i;
      end
   end
   %将本轮结果填入设置传感器的优先级向量priority
   k=0;
   for i=1:1:n
      if priority(i)==0
         k=k+1;
         if k==imin
            priority(i)=j/n;   %第i个自由度在第j轮被淘汰,于是其被设置传感器的优先级被定义为j/n,此值越大,优先布置传感器的级别越高
            dele(j)=i;      %本轮删除第i个自由度,dele 仅为用于数字显示淘汰顺序,可以不要此行
         end
      end
   end
   
   %根据上述最小值,确定下一轮的模态矩阵
   for k=1:1:imin-1
       aj(k,1:m)=a(k,1:m);
   end
   for k=imin:1:nj-1
       aj(k,1:m)=a(k+1,1:m);
   end
   a=aj;
   nj=nj-1;
end
figure(1)
bar(priority(1:n))%传感器的优先级
grid on
xlabel('No. of DOF','fontname','times new roman','fontsize',10,'fontweight','bold');
ylabel('Priority of Instrumentation','fontname','times new roman','fontsize',10,'fontweight','bold');
colormap([1 0 0]);
dele%数字显示淘汰顺序
figure(2)%淘汰顺序
DeleMatrix(1:n,1:n)=1;%
for i=2:1:n
   for j=1:1:i-1
       DeleMatrix(i,dele(j))=0;
   end
end
bar3(DeleMatrix);
DeleMatrix

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -