声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

12
返回列表 发新帖
楼主: 土木年华

[编程技巧] MATLAB编程求教,谢谢回答

  [复制链接]
发表于 2011-4-15 14:14 | 显示全部楼层
回复 15 # 土木年华 的帖子

感觉应该不是很难吧,kt/mt就是时变频率,而y应该就是你方程中指的A的变化率,楼主自己编写下试试吧!
回复 支持 反对
分享到:

使用道具 举报

 楼主| 发表于 2011-4-15 17:04 | 显示全部楼层
回复 16 # meiyongyuandeze 的帖子

你好, 经过里边的参数m(t),k(t),c(t),可以求出里边的瞬时频率和瞬时阻尼,
但这里我还想利用上面的hilbert方法去求解瞬时的频率和阻尼,
里边的A(t) 是瞬时幅值,公式里边的要对他求一阶和二阶导数, 但我得到的A(t) 都是离散的数据, 怎么处理导数呢?  谢谢你, 麻烦你拉
发表于 2011-4-15 17:54 | 显示全部楼层
本帖最后由 meiyongyuandeze 于 2011-4-15 17:54 编辑

回复 17 # 土木年华 的帖子

状态方程中,一阶导数就是dot(1)=x(2)=y(:,2),二阶导数可以将y带入dot(2)得到的就是。
  1. dot=[x(2);
  2. -ct/mt*x(2)-kt/mt*x(1)];
复制代码
 楼主| 发表于 2011-6-1 20:02 | 显示全部楼层
回复 8 # meiyongyuandeze 的帖子

你好,前一段时间求教过你, 现在又遇到一个问题要求教你,先谢谢你!
也是解一微分方程:但我自己写的程序计算总是算不出来,一计算matlab就总是忙碌,感觉像是死循环似地,
clear all
clc
close all
%-------------------求解微分方程-------------------------------------
%at+2*qn*(2*pi*fn)*vt+(2*pi*fn)^2*dt=1/m*(D1*G*sin(2*pi*fs*t)*sin(pi*fs*ls*
%t/L))
[t, y]=ode45('myfun',[0,0.001:0.001:50],[0,0]);  

%-----------------调用的函数
function xdot=myfun(t,x)
%-----------动力特性------------------------------------
fn=2.04; %频率
qn=0.0026; %阻尼
m=58000;  %模态质量(kg)

%--------------
G=700;   L=78;   
fs=normrnd(1.96,0.235,[1 500]);  % 生成500个正态随机数
ls=normrnd(0.63,0.071,[1 500]);  % 生成500个正态随机数
Ph=unifrnd(-pi,pi,[1 500]);  % 生成均匀分布随机数
for i=1:500;
DJ1(i)=-0.2649*fs(i)^3+1.3206*fs(i)^2-1.7597*fs(i)+0.7613;  
D1=normrnd(DJ1(i),0.16,[1 500]);  % 对第一阶谐波分量生成500个DLF正态随机数
end
i=1;
t=0:0.001:L/(fs(i)*ls(i)); %个体通过结构的时间
Ft=(D1(i)*G*sin(2*pi*fs(i)*t).*sin(pi*fs(i)*ls(i)*t/L));
xdot=[x(2);
    -2*qn*(2*pi*fn)*x(2)-(2*pi*fn)^2*x(1)-Ft/m];
发表于 2011-6-1 22:09 | 显示全部楼层
回复 19 # 土木年华 的帖子

我只是大概看了下,我感觉可能是你定义的函数中的[t,y]中的t和t=0:0.001:L/(fs(i)*ls(i));这两个t有冲突,个人认为,没调试。
发表于 2013-8-29 09:02 | 显示全部楼层
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-12-24 00:14 , Processed in 0.058409 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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