基于MATLAB梁模型振型动画程序设计

梁模型振型动画

%该模型为一端固定梁模型振型动画
clear; close all; clc

% 系统参数
E = 1e7;
A = 1.5;
rho = 2.6e-4;%密度

% 节点坐标矩阵第一行为x坐标,对应列第二行为y坐标.既有坐标点(0 0),(0 40),(40 0),(40 40),(80 0),(80 40)
p = [0 0 40 40 80 80;
0 40 0 40 0 40];
numberOfNodes = size(p, 2);% 取出系统节点个数即p.

% 对各节点进行建模如第一行表示:连接1 3节点形成一个单元,第二行1 4表示连接1 4节点形成一个单元
t = [1 3;
1 4;
2 4;
3 4;
3 5;
4 5;
4 6;
5 6];
numberOfElements = size(t, 1);% 取出系统总的单元个数即t.

% c
c = A * E;

% Initialization of K and F
K = zeros(2 * numberOfNodes);% 初始刚度阵
M = zeros(2 * numberOfNodes);
F = zeros(2 * numberOfNodes, 1);

% 以下for循环为计算整体刚度阵,质量阵为计算固有频率做准备,经过试验下列for循环可以使用自己写成的有限元整体刚度
%阵,质量阵来代替。但要注意
%在amp = a(:, mode)’ * exp(1i * omega(mode, mode) * timeStep); amp = reshape(amp, 2, numberOfNodes);中输入
%numberOfNodes要与自己实际模型一致
%
for e = 1 : numberOfElements
nodes = t(e, ?;
dofs = reshape([2 * nodes - 1; 2 * nodes], 1, 2 * numel(nodes));
nodeCoords = p(:, t(e,:));
n = diff(nodeCoords, 1, 2);
n = n / norm(n);
Q = [n(1) n(2) 0 0;
0 0 n(1) n(2)];
localCoords = Q * nodeCoords(?;
P = [ones(1, 2); localCoords’];
lengthOfElement = abs(det§);
C = inv§;
diffPhi = C(:, 2);
Ke = Q’ * diffPhi * A * E * diffPhi’ * lengthOfElement * Q;

% Local shape functions
phi_1 = @(x) C(1,1) + C(1,2) * x;
phi_2 = @(x) C(2,1) + C(2,2) * x;

a = localCoords(1);
b = localCoords(2);

intPhi = [integral(@(x)phi_1(x) .* phi_1(x), a, b) 0 integral(@(x)phi_1(x) .* phi_2(x), a, b) 0;
0 integral(@(x)phi_1(x) .* phi_1(x), a, b) 0 integral(@(x)phi_1(x) .* phi_2(x), a, b);
integral(@(x)phi_1(x) .* phi_2(x), a, b) 0 integral(@(x)phi_2(x) .* phi_2(x), a, b) 0;
0 integral(@(x)phi_1(x) .* phi_2(x), a, b) 0 integral(@(x)phi_2(x) .* phi_2(x), a, b)];

Me = intPhi * rho * A;

K(dofs, dofs) = K(dofs, dofs) + Ke;
M(dofs, dofs) = M(dofs, dofs) + Me;

end
%以上为生成整体刚度阵,质量阵循环程序
% 施加固定边界条件
Dirichlet = [1 2];
doffsDirichlet = [Dirichlet * 2 - 1, Dirichlet * 2];
K(doffsDirichlet, ? = 0;
M(doffsDirichlet, ? = 0;
M(doffsDirichlet, doffsDirichlet) = eye(numel(doffsDirichlet));

% 求解固有频率与模态振型
[a, lambda] = eig(M \ K);% lambda为特征值,a为与特征值对应特征向量,模态振型主要由特征向量来生成
[~, permutation] = sort(diag(lambda));% 对lambda特征值进行从大到小排序,并存入[~, permutation]矩阵中
lambda = lambda(permutation, permutation);
a = a(:, permutation);

% 求解转速
omega = sqrt(lambda);%实模态分析法因此需要对结果开方

% 求固有频率
frequencies = diag(omega / (2 * pi));
sprintf(‘f = %.1f Hz\n’, frequencies)%输出各阶固有频率

% 画图
set(gcf, ‘color’, ‘w’)
mode = 5;%确定画第几阶模态振型图
gain = 3.5;
tEnd = 3 * 2 * pi / omega(mode, mode); % 3 periods
for timeStep = 0 : tEnd / 5e1 : tEnd %为下列插值模态动画进行时间步设计
cla
amp = a(:, mode)’ * exp(1i * omega(mode, mode) * timeStep);%求个时间步下的模态位移变化量
amp = reshape(amp, 2, numberOfNodes);%为将变化后的模态位移变化量加到原模型上,对结果矩阵进行一定变换
pnew = p + gain * imag(amp);%将模态位移变化量加到原来的模态位移之上
hold on
for e = 1 : numberOfElements
nodes = t(e, ?;
plot(p(1, nodes), p(2, nodes), ‘b–’);
plot(pnew(1, nodes), pnew(2, nodes), ‘k-o’,…
‘MarkerFaceColor’, ‘k’, ‘MarkerSize’, 10, ‘LineWidth’, 3);
end
axis equal
axis([-5 85 -5 45])
axis off
drawnow
end

原贴地址
链接: [https://ww2.mathworks.cn/matlabcentral/fileexchange/46384-introduction-to-fem).

基于MATLAB梁模型振型动画程序设计相关推荐

  1. 浅层神经网络回归预测,基于MATLAB。 模型包括BPNN,极限学习机(ELM)和Elman网络

    浅层神经网络回归预测,基于MATLAB. 模型包括BPNN,极限学习机(ELM)和Elman网络(循环神经网络的一种). 有实例,直接替换数据可运行. 有训练集和测试集的划分,可直接套数据. 可以进行 ...

  2. pq法潮流计算matlab,基于MATLAB电力系统PQ潮流计算程序设计(范文1)

    <基于MATLAB电力系统PQ潮流计算程序设计.doc>由会员分享,可免费在线阅读全文,更多与<基于MATLAB电力系统PQ潮流计算程序设计>相关文档资源请在帮帮文库(www. ...

  3. 基于MATLAB实现电磁场的动画演示

    基于MATLAB实现电磁场的动画演示 简介:学习过电磁场的小伙伴们都比较清楚,电磁场由于其抽象的概念,时空分布复杂等问题,成功劝退一大波小朋友,如果我们在学习的时候能够将抽象的概念可视化,再将静态的图 ...

  4. pq算法matlab仿真,基于MATLAB电力系统PQ潮流计算程序设计最终版(模版2)

    <基于MATLAB电力系统PQ潮流计算程序设计.doc>由会员分享,可免费在线阅读全文,更多与<基于MATLAB电力系统PQ潮流计算程序设计(最终版)>相关文档资源请在帮帮文库 ...

  5. matlab2017b怎么进行sil测试,基于Matlab的模型自动测试方法与流程

    本发明属于航空发动机控制律模型全自动测试领域. 背景技术: : 目前,Matlab工具软件在航空发动机控制领域使用非常广泛,发控项目都是采用Matlab工具进行模型开发设计.控制律模型都是人工开发,随 ...

  6. 【ARMA仿真】基于matlab ARMA模型卡尔曼滤波【含Matlab源码 2431期】

    ⛄一.ARMA模型 1 ARMA模型介绍及应用 对于平稳时间序列,自回归移动平均(ARMA)模型可用于研究时间经济变量的变化规律,ARMA(p,q)模型包括一个自回归过程AR§和一个移动平均MA(q) ...

  7. matlab如何制作振型动画_Matlab中动画的实现、制作和保存(转载Matlab技术论坛)

    Matlab中动画的实现.制作和保存(转载Matlab技术论坛) 本帖由Matlab技术论坛原创,原帖参见 http://www.matlabsky.com/thread-592-1-1.html 光 ...

  8. 【数学建模】基于matlab SIR模型新冠病毒COVID-19估计【含Matlab源码 2042期】

    一.SEIR模型简介 1 SEIR模型简介 如果所研究的传染病有一定的潜伏期,与病人接触过的健康人并不马上患病,而是成为病原体的携带者,归入 E 类.此时有: 仍有守恒关系 S(t) + E(t) + ...

  9. matlab如何制作振型动画_Matlab 实时动画制作示例

    [ * 例 10.7.5 .3-1 ]制作红色小球沿一条带封闭路径的下旋螺线运动的实时动画. (1)编写函数文件 anim_zzy1.m [anim_zzy1.m] function f=anim_z ...

最新文章

  1. bootstrap 树形表格渲染慢_bootstrap-table-treegrid数据量较大时渲染太久了
  2. nginx、apach、php、mysql编译参数
  3. 在updatepanel中使用fileupload控件
  4. Android 基础(二十四) EditText
  5. 【NLP】文本分类还停留在BERT?对偶对比学习框架也太强了
  6. HDU5773-The All-purpose Zero-多校#41010-最长上升子序列问题
  7. JavaScipt面向对象编程----闭包
  8. wamp php启动不成功,wamp的mysql 启动失败解决
  9. centos 7 安装golang遇到问题: No package golang available.
  10. 远程ykvm 插件移值java_Centos7 命令行下kvm安装windows,linux
  11. access数据库应用系统客观题_随访数据库的建立:易侕DataWeb系统应用
  12. 计算机中职生毕业鉴定评语,中职学生毕业鉴定评语
  13. .net敏捷开发及常用工具
  14. idea 的精准搜索_intellij idea 的全局搜索快捷键方法
  15. linux远程连接命令有哪些,linux系统远程连接命令有哪些
  16. 使用FileTypesMan修复office关联图标
  17. SQL编程和高级查询
  18. 跳跃游戏 改 dfs
  19. https双向认证java
  20. NVIDIA显卡架构

热门文章

  1. 5倍速xlsx转pdf
  2. 显示12306服务器处理中正在排队,12306一直在排队中怎么办
  3. 35之后程序员何去何从
  4. 网盘关停不用怕:自己动手搭建免费私有云
  5. 中值滤波原理及c++实现
  6. python判断素数的函数_python寻找1~n以内(包括n)所有素数
  7. VS2008中编译和使用OpenSSL
  8. ASP.NET完全手册(电子工业出版社)
  9. 微信小程序云开发之云数据库入门
  10. 从脑机接口到抗疫前线,医疗AI落地的几种未来|郑冶枫专访