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

📄 testdongli.m

📁 mtalab中最好 理解的文章 最好是新手必看的!
💻 M
字号:
function testdongli
clc
close all
global hKComputeContent
hFigTest=figure;
set(gcf,'menubar','none','tag','hFigTest');
set(gcf,'numbertitle','off','name','动力计算测试程序','resize','off');
set(gcf,'units','normalized','position',[.1,.1,.7,.7]);
set(gcf,'defaultuicontrolfontname','隶书');
set(gcf,'defaultuicontrolfontsize',12);
set(gcf,'defaultuicontrolunits','normalized');

% 界面的布置——界面底部按钮布置
hPushComputeKFloor=uicontrol(gcf,...
    'style','push',...
    'tag','hPushComputeKFloor',...
    'position',[.05,.01,.19,.05],...
    'string','计算楼层刚度');
hPushComputePlot=uicontrol(gcf,...
    'style','push',...
    'tag','hPushComputePlot',...
    'position',[.26,.01,.18,.05],...
    'string','振型图绘制',...
    'enable','off');
hPushComputeK=uicontrol(gcf,...
    'style','push',...
    'tag','hPushComputeK',...
    'position',[.48,.01,.14,.05],...
    'string','动力计算',...
    'enable','off');
hPushComputeKExit=uicontrol(gcf,...
    'style','push',...
    'position',[.66,.01,.14,.05],...
    'string','退出',...
    'callback','close all');
hFrameEquDataSetup=uicontrol(gcf,...
    'style','frame',...
    'position',[.01,.43,.45,.56]);
hTextTotal=uicontrol(gcf,...
    'style','text',...
    'position',[.011,.925,.448,.05],...
    'horizontal','center',...
    'string','基本数据输入',...
    'fontsize',14);
hTextDelta=uicontrol(gcf,...
    'style','text',...
    'position',[.02,.87,.1,.05],...
    'horizontal','right',...
    'string','柔度矩阵:',...
    'fontsize',12);
hEditDelta=uicontrol(gcf,...
    'style','edit',...
    'tag','hEditDelta',...
    'position',[.02,.78,.43,.1],...
    'fontsize',9,...
    'string','1e-6*[32.8,36.2,36.3;36.2,69.1,72.1;36.3,72.1,106]',...
    'max',2);
delta=str2num(get(hEditDelta,'string'));
set(hEditDelta,'string',sprintf(FormatOutput(delta),delta));
hTextKFloor=uicontrol(gcf,...
    'style','text',...
    'position',[.02,.72,.1,.05],...
    'horizontal','right',...
    'string','楼层刚度:',...
    'fontsize',12);
hEditKFloor=uicontrol(gcf,...
    'style','edit',...
    'tag','hEditKFloor',...
    'position',[.02,.62,.43,.1],...
    'fontsize',9,...
    'max',2);
hTextM=uicontrol(gcf,...
    'style','text',...
    'position',[.02,.56,.1,.05],...
    'horizontal','right',...
    'string','质量矩阵:',...
    'fontsize',12);
hEditM=uicontrol(gcf,...
    'style','edit',...
    'tag','hEditM',...
    'position',[.02,.46,.43,.1],...
    'fontsize',9,...
    'string','[119 0 0;0 113 0;0 0 60]',...
    'max',2);
M=str2num(get(hEditM,'string'));
set(hEditM,'string',sprintf(FormatOutput(M),M));
hFrameEquDataSetup=uicontrol(gcf,...
    'style','frame',...
    'position',[.01,.07,.94,.35]);
hTextW=uicontrol(gcf,...
    'style','text',...
    'position',[.02,.34,.1,.05],...
    'horizontal','right',...
    'string','自振频率:',...
    'fontsize',12);
hEditW=uicontrol(gcf,...
    'style','edit',...
    'tag','hEditW',...
    'position',[.02,.1,.2,.24],...
    'fontsize',9,...
    'max',2);
hTextT=uicontrol(gcf,...
    'style','text',...
    'position',[.24,.34,.1,.05],...
    'horizontal','right',...
    'string','自振周期:',...
    'fontsize',12);
hEditT=uicontrol(gcf,...
    'style','edit',...
    'tag','hEditT',...
    'position',[.24,.1,.2,.24],...
    'fontsize',9,...
    'max',2);
hTextX=uicontrol(gcf,...
    'style','text',...
    'position',[.48,.34,.1,.05],...
    'horizontal','right',...
    'string','结构振型:',...
    'fontsize',12);
hEditX=uicontrol(gcf,...
    'style','edit',...
    'tag','hEditX',...
    'position',[.48,.1,.44,.24],...
    'fontsize',9,...
    'max',2);

% 搜集界面句柄
hKComputeContent=guihandles(hFigTest);
guidata(hFigTest,hKComputeContent);

% 编写回调函数
set(hPushComputeKFloor,'callback',[...
    'global hKComputeContent,',...
    'delta=str2num(get(hKComputeContent.hEditDelta,''string''));',...
    'K=inv(delta);',...
    'str=[];',...
    'for i=1:size(K,2)-1,',...
    'str=[str,''%3.4e'',''  ''];',...
    'end;',...
    'str=[str,'' '',''%3.4e'','' \n''];',...
    'set(hKComputeContent.hEditKFloor,''string'',sprintf(str,K));',...
    'set(hKComputeContent.hPushComputeK,''enable'',''on'');',...
    ]);
set(hPushComputeK,'callback',[...
    'global hKComputeContent,',...
    'K=str2num(get(hKComputeContent.hEditKFloor,''string''));',...
    'M=str2num(get(hKComputeContent.hEditM,''string''));',...
    '[C,W]=eig(inv(M)*K);',...
    'X=[];',...
    'for i=1:length(M),',...
    'Ct=C(:,i);',...
    'X=[X,Ct/Ct(1)];',...
    'end;',...
    'W=sqrt(diag(W));',...
    'T=2*pi./W;',...
    'str=[];',...
    'for i=1:size(W,1)-1,',...
    'str=[str,''%3.4e'',''  ''];',...
    'end;',...
    'str=[str,'' '',''%3.4e'','' \n''];',...
    'set(hKComputeContent.hEditW,''string'',sprintf(str,W));',...
    'str=[];',...
    'for i=1:size(T,1)-1,',...
    'str=[str,''%3.4e'',''  ''];',...
    'end;',...
    'str=[str,'' '',''%3.4e'','' \n''];',...
    'set(hKComputeContent.hEditT,''string'',sprintf(str,T));',...
    'str=[];',...
    'for i=1:size(X,2)-1,',...
    'str=[str,''%3.4e'',''  ''];',...
    'end;',...
    'str=[str,'' '',''%3.4e'','' \n''];',...
    'set(hKComputeContent.hEditX,''string'',sprintf(str,X));',...
    'set(hKComputeContent.hFigTest,''userdata'',X);',...
    'set(hKComputeContent.hPushComputePlot,''enable'',''on'');',...
    ]);
set(hPushComputePlot,'callback',[...
    'global hKComputeContent,',...
    'X=get(hKComputeContent.hFigTest,''userdata'');',...
    'subplot(''position'',[.49,.75,.22,.2]);',...
    'plot(X(:,1),[3:-1:1],''ko'');',...
    'set(gca,''nextplot'',''add'');',...
    'plot(zeros(1,100),linspace(1,3),''linewidth'',2.5);',...
    'plot(linspace(0,X(1,1)),3,''c-.'');',...
    'plot(linspace(0,X(2,1)),2,''c-.'');',...
    'plot(X(:,1),[3:-1:1],''r:'');',...
    'subplot(''position'',[.73,.75,.22,.2]);',...
    'plot(X(:,2),[3:-1:1],''ko'');',...
    'set(gca,''nextplot'',''add'');',...
    'plot(zeros(1,100),linspace(1,3),''linewidth'',2.5);',...
    'plot(linspace(0,X(1,2)),3,''c-.'');',...
    'plot(linspace(0,X(2,2)),2,''c-.'');',...
    'plot(X(:,2),[3:-1:1],''r:'');',...
    'subplot(''position'',[.62,.5,.22,.2]);',...
    'plot(X(:,3),[3:-1:1],''ko'');',...
    'set(gca,''nextplot'',''add'');',...
    'plot(zeros(1,100),linspace(1,3),''linewidth'',2.5);',...
    'plot(linspace(0,X(1,3)),3,''c-.'');',...
    'plot(linspace(0,X(2,3)),2,''c-.'');',...
    'plot(X(:,3),[3:-1:1],''r:'');',...
    ]);
% 计算结构频率、周期和振型的子程序
function WTCResults=WTXCompute(K,M)
[C,W]=eig(inv(M)*K);
X=[];
for i=1:length(M)
    Ct=C(:,i);
    X=[X,Ct/Ct(1)];
end
W=sqrt(diag(W));
T=2*pi./W;
WTCResults=struct(...
    'W',W,...
    'X',X,...
    'T',T,...
    'C',C);

% 矩阵输出显示格式函数
function str=FormatOutput(InputMatrix)
str=[];
for i=1:size(InputMatrix,2)-1
    str=[str,'%3.4e',' '];
end
str=[str,' ','%3.4e',' \n'];

⌨️ 快捷键说明

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