声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 4375|回复: 8

[控制系统类] 《Matlab在抗震工程中的应用》中一个仿真例题

[复制链接]
发表于 2013-6-8 17:13 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
下面为形成实例模块参数的主程序
qdzb;            %产生地震波,即dzb模块中的参数
% 输入结构参数
k=[1,1,1,1,1]*4.2e+7; m0=[1,1,1,1,1]*2.0e+5; % 输入粘弹性阻尼器参数 g1=1.5e+7; g2=2.01e+7; nn=2; cn=5; as=3e-2; t=1.3e-2; O=zeros(cn); I=eye(cn); k0= matrixju (k,cn); m=diag(m0); [x,d]=eig(k0,m); d=sqrt(d); w=sort(diag(d)); a=2*w(1)*w(2)*(0.05*w(2)-0.07*w(1))/(w(2)^2-w(1)^2);b=2*(0.07*w(2)-0.05*w(1))/(w(2)^2-w(1)^2); c0=a*m+b*k0; nd=[1,1,1,1,1]; kd1=nn*g1*as/t; cd1=nn*g2*as/w(1)/t; kd=matrixju (kd1*nd,cn); cd=matrixju (cd1*nd,cn); A=[O I;-inv(m)*k0 -inv(m)*c0];     % 模块A中的参数 B=[O;I];                         % 模块B中的参数 R=inv(m)*[kd cd];         % 模块RA中的参数 II=diag(I);                % 模块B2中的参数 Ca=zeros(cn,2*cn); Ca(cn,2*cn)=1;            % 模块CA中的参数 Cw=zeros(cn,2*cn); Cw(cn,cn)=1;             % 模块CW中的参数 D=diag(O) %子程序:形成刚度或阻尼矩阵的聚合矩阵function [kcju]=matrixju(korc,cn) % matrix aggregation of system kcju=zeros(cn); for i=1:cn-1 kcju(i,i)=korc(i)+korc(i+1); kcju(i,i+1)=-korc(i+1); kcju(i+1,i)=-korc(i+1); end kcju(cn,cn)=korc(cn)
第一行就有问题qdzb不知道什么东西,程序运行不出已知的图形,请学习这本书的大神指导一下!!!灰常感谢!


回复
分享到:

使用道具 举报

发表于 2013-6-11 00:58 | 显示全部楼层
qdzb肯定是一个函数文件,仔细看看书是怎么说的。
 楼主| 发表于 2013-6-15 08:47 | 显示全部楼层
 楼主| 发表于 2013-6-15 10:42 | 显示全部楼层
mgh_nx 发表于 2013-6-11 00:58
qdzb肯定是一个函数文件,仔细看看书是怎么说的。

fid=fopen('El-centro.txt','r');    %r:open file for reading(default)
qdzb=fscanf(fid,'%f');        % "%f"转换文件(字符)格式 ;

k=[1,1,1,1,1]*4.2e+7;
m0=[1,1,1,1,1]*2.0e+5;
% 输入粘弹性阻尼器参数
g1=1.5e+7;
g2=2.01e+7;
nn=2;
cn=5;
as=3e-2;
t=1.3e-2;
O=zeros(cn);
I=eye(cn);
k0= matrixju (k,cn);
m=diag(m0);
[x,d]=eig(k0,m);
d=sqrt(d);
w=sort(diag(d));
a=2*w(1)*w(2)*(0.05*w(2)-0.07*w(1))/(w(2)^2-w(1)^2);
b=2*(0.07*w(2)-0.05*w(1))/(w(2)^2-w(1)^2);
c0=a*m+b*k0;
nd=[1,1,1,1,1];
kd1=nn*g1*as/t;
cd1=nn*g2*as/w(1)/t;
kd=matrixju (kd1*nd,cn);
cd=matrixju (cd1*nd,cn);
A=[O I;-inv(m)*k0 -inv(m)*c0];     % 模块A中的参数
B=[O;I];                         % 模块B中的参数
R=inv(m)*[kd cd];         % 模块RA中的参数
II=diag(I);                % 模块B2中的参数
Ca=zeros(cn,2*cn);
Ca(cn,2*cn)=1;            % 模块CA中的参数
Cw=zeros(cn,2*cn);
Cw(cn,cn)=1;             % 模块CW中的参数
D=diag(O)

我把qdzb改了,调用文件El-centro.txt。文件为地震波,如下:

  
 楼主| 发表于 2013-6-15 10:43 | 显示全部楼层
本帖最后由 牛小贱 于 2014-2-21 14:20 编辑
mgh_nx 发表于 2013-6-11 00:58
qdzb肯定是一个函数文件,仔细看看书是怎么说的。


 楼主| 发表于 2013-6-15 10:44 | 显示全部楼层
本帖最后由 牛小贱 于 2014-2-20 15:52 编辑
江山美人 发表于 2013-6-15 10:43
-1.4000000e+001
-1.0800000e+002
-1.0100000e+002
附件为【地震波】!
 楼主| 发表于 2013-6-15 10:45 | 显示全部楼层
本帖最后由 牛小贱 于 2014-2-20 15:50 编辑
江山美人 发表于 2013-6-15 10:44
3.4000000e+002
  3.5700000e+002
  8.0000000e+000

附件为【地震波】!再运行以下仿真:
[img]K{P[CLL3_5V5DJ9RXZA)Z@M[/img]
出现以下问题:
[img]2RZ4DWZ(53[RJZO$%G0K(34[/img]
不知道什么原因,请指教!

地震波.txt

11.03 KB, 下载次数: 7

 楼主| 发表于 2013-6-15 10:47 | 显示全部楼层
以上3段地震波是整个地震波,请大神看看指教。谢谢。最后出现的问题是Invalid matrix-format variable specified as workspace input in 'untitled2/dzb'. The matrix must have two dimensions and at least two columns. Complex signals of any data type and non-double real signals must be in structure format. The first column must contain time values and the remaining columns the data values.
发表于 2013-12-11 23:49 | 显示全部楼层
楼主,真心不希望你这样发帖子,光你的调用数据就占这么大篇幅,我还以为有多少人回复你呢!最好是以文件的形式上传比较好,其他人看着也比较爽,……只是一点点建议!
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-12-28 13:47 , Processed in 0.088334 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表