使用主成分分析进行模态分解(Matlab代码实现)

news2024/12/24 5:11:39

 👨‍🎓个人主页:研学社的博客 

💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文目录如下:🎁🎁🎁

目录

💥1 概述

📚2 运行结果

🌈3 Matlab代码实现

🎉4 参考文献


💥1 概述

本文使用主成分分析 (PCA) 对 2DOF 系统进行振型识别,该系统受到高斯白噪声激励,并增加了响应的不确定性(也是高斯白噪声)。但是,由于
协方差矩阵的对称性,PCA的特征向量是正颌的。
-模态形状仅在矩阵 inv(M)*K 对称时才是正交的。
-PCA 只有在实振型是正颌时才识别它们,这意味着 inv(M)*K 是对称的。

通过改变质量矩阵M=[2 0; 0 1];而不是恒等式inv(M)*K将不是对称的,即使刚度矩阵是对称的,PCA将无法识别实际的振型。

📚2 运行结果

 

🌈3 Matlab代码实现

部分代码:

for i=1:1:n
    
    h(i,:)=(1/(Mn(i)*wd(i))).*exp(-zeta(i)*wn(i)*t).*sin(wd(i)*t); %transfer function of displacement
    hd(i,:)=(1/(Mn(i)*wd(i))).*(-zeta(i).*wn(i).*exp(-zeta(i)*wn(i)*t).*sin(wd(i)*t)+wd(i).*exp(-zeta(i)*wn(i)*t).*cos(wd(i)*t)); %transfer function of velocity
    hdd(i,:)=(1/(Mn(i)*wd(i))).*((zeta(i).*wn(i))^2.*exp(-zeta(i)*wn(i)*t).*sin(wd(i)*t)-zeta(i).*wn(i).*wd(i).*exp(-zeta(i)*wn(i)*t).*cos(wd(i)*t)-wd(i).*((zeta(i).*wn(i)).*exp(-zeta(i)*wn(i)*t).*cos(wd(i)*t))-wd(i)^2.*exp(-zeta(i)*wn(i)*t).*sin(wd(i)*t)); %transfer function of acceleration
    
    qq=conv(fn(i,:),h(i,:))*dt;
    qqd=conv(fn(i,:),hd(i,:))*dt;
    qqdd=conv(fn(i,:),hdd(i,:))*dt;
    
    q(i,:)=qq(1:steps); % modal displacement
    qd(i,:)=qqd(1:steps); % modal velocity
    qdd(i,:)=qqdd(1:steps); % modal acceleration
       
end

x=Vectors*q; %displacement
v=Vectors*qd; %vecloity
a=Vectors*qdd; %vecloity

%Add noise to excitation and response
%--------------------------------------------------------------------------
f2=f+0.05*randn(2,10000);
a2=a+0.05*randn(2,10000);
v2=v+0.05*randn(2,10000);
x2=x+0.05*randn(2,10000);

%Plot displacement of first floor without and with noise
%--------------------------------------------------------------------------
figure;
subplot(3,2,1)
plot(t,f(1,:)); xlabel('Time (sec)');  ylabel('Force1'); title('First Floor');
subplot(3,2,2)
plot(t,f(2,:)); xlabel('Time (sec)');  ylabel('Force2'); title('Second Floor');
subplot(3,2,3)
plot(t,x(1,:)); xlabel('Time (sec)');  ylabel('DSP1');
subplot(3,2,4)
plot(t,x(2,:)); xlabel('Time (sec)');  ylabel('DSP2');
subplot(3,2,5)
plot(t,x2(1,:)); xlabel('Time (sec)');  ylabel('DSP1+Noise');
subplot(3,2,6)
plot(t,x2(2,:)); xlabel('Time (sec)');  ylabel('DSP2+Noise');

%Identify modal parameters using displacement with added uncertainty
%--------------------------------------------------------------------------
[V]=pca(x2');   %PCA eigenvectors

%Plot real and identified first modes to compare between them
%--------------------------------------------------------------------------
figure;
plot([0 ; -Vectors(:,1)],[0 1 2],'r*-');
hold on
plot([0  ;V(:,1)],[0 1 2],'go-.');
hold on
plot([0 ; -Vectors(:,2)],[0 1 2],'b^--');
hold on
plot([0  ;V(:,2)],[0 1 2],'mv:');
hold off
title('Real and Identified Mode Shapes');
legend('Mode 1 (Real)','Mode 1 (Identified using PCA)','Mode 2 (Real)','Mode 2 (Identified using PCA)');
xlabel('Amplitude');
ylabel('Floor');
grid on;
daspect([1 1 1]);

for i=1:1:n
    
    h(i,:)=(1/(Mn(i)*wd(i))).*exp(-zeta(i)*wn(i)*t).*sin(wd(i)*t); %transfer function of displacement
    hd(i,:)=(1/(Mn(i)*wd(i))).*(-zeta(i).*wn(i).*exp(-zeta(i)*wn(i)*t).*sin(wd(i)*t)+wd(i).*exp(-zeta(i)*wn(i)*t).*cos(wd(i)*t)); %transfer function of velocity
    hdd(i,:)=(1/(Mn(i)*wd(i))).*((zeta(i).*wn(i))^2.*exp(-zeta(i)*wn(i)*t).*sin(wd(i)*t)-zeta(i).*wn(i).*wd(i).*exp(-zeta(i)*wn(i)*t).*cos(wd(i)*t)-wd(i).*((zeta(i).*wn(i)).*exp(-zeta(i)*wn(i)*t).*cos(wd(i)*t))-wd(i)^2.*exp(-zeta(i)*wn(i)*t).*sin(wd(i)*t)); %transfer function of acceleration
    
    qq=conv(fn(i,:),h(i,:))*dt;
    qqd=conv(fn(i,:),hd(i,:))*dt;
    qqdd=conv(fn(i,:),hdd(i,:))*dt;
    
    q(i,:)=qq(1:steps); % modal displacement
    qd(i,:)=qqd(1:steps); % modal velocity
    qdd(i,:)=qqdd(1:steps); % modal acceleration
       
end

x=Vectors*q; %displacement
v=Vectors*qd; %vecloity
a=Vectors*qdd; %vecloity

%Add noise to excitation and response
%--------------------------------------------------------------------------
f2=f+0.05*randn(2,10000);
a2=a+0.05*randn(2,10000);
v2=v+0.05*randn(2,10000);
x2=x+0.05*randn(2,10000);

%Plot displacement of first floor without and with noise
%--------------------------------------------------------------------------
figure;
subplot(3,2,1)
plot(t,f(1,:)); xlabel('Time (sec)');  ylabel('Force1'); title('First Floor');
subplot(3,2,2)
plot(t,f(2,:)); xlabel('Time (sec)');  ylabel('Force2'); title('Second Floor');
subplot(3,2,3)
plot(t,x(1,:)); xlabel('Time (sec)');  ylabel('DSP1');
subplot(3,2,4)
plot(t,x(2,:)); xlabel('Time (sec)');  ylabel('DSP2');
subplot(3,2,5)
plot(t,x2(1,:)); xlabel('Time (sec)');  ylabel('DSP1+Noise');
subplot(3,2,6)
plot(t,x2(2,:)); xlabel('Time (sec)');  ylabel('DSP2+Noise');

%Identify modal parameters using displacement with added uncertainty
%--------------------------------------------------------------------------
[V]=pca(x2');   %PCA eigenvectors

%Plot real and identified first modes to compare between them
%--------------------------------------------------------------------------
figure;
plot([0 ; -Vectors(:,1)],[0 1 2],'r*-');
hold on
plot([0  ;V(:,1)],[0 1 2],'go-.');
hold on
plot([0 ; -Vectors(:,2)],[0 1 2],'b^--');
hold on
plot([0  ;V(:,2)],[0 1 2],'mv:');
hold off
title('Real and Identified Mode Shapes');
legend('Mode 1 (Real)','Mode 1 (Identified using PCA)','Mode 2 (Real)','Mode 2 (Identified using PCA)');
xlabel('Amplitude');
ylabel('Floor');
grid on;
daspect([1 1 1]);

🎉4 参考文献

部分理论来源于网络,如有侵权请联系删除。

[1] Al Rumaithi, Ayad, "Characterization of Dynamic Structures Using Parametric and Non-parametric System Identification Methods" (2014). Electronic Theses and Dissertations. 1325.

[2] Al-Rumaithi, Ayad, Hae-Bum Yun, and Sami F. Masri. "A Comparative Study of Mode Decomposition to Relate Next-ERA, PCA, and ICA Modes." Model Validation and Uncertainty Quantification, Volume 3. Springer, Cham, 2015. 113-133.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/58849.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

HTML入门零基础教程(五)

嗨,大家好,我是异星球的小怪同志 一个想法有点乱七八糟的小怪 如果觉得对你有帮助,请支持一波。 希望未来可以一起学习交流。 目录 一、图像标签 1.图像标签 2.图标标签的其它属性 3.图像标签属性注意点: 一、图像标签 1.…

Unity工具 - 快捷任务栏(Taskbar)

在实际项目中,我们会使用很多的工具。根据工具的来源,可以分为:工程内工具,工程外工具。 工程内的工具:多数是由Unity 提供IMGUI工具包实现的,它使用OnGUI函数以及实现它的脚本来绘制和管理用户界面&#x…

【云服务器 ECS 实战】云服务器新手指南(配置+使用详解)

一、写在前面二、ECS 云服务是什么三、云服务器的购买与配置购买云服务器密码与安全组配置远程连接配置,使网络用户可以访问到服务器在服务器部署自己的网页一、写在前面 谈起云计算,相信大家都不陌生,可以说它已经颠覆了我们生活中的很多应…

Tomcat服务器的简介

文章目录1.概念1.1 什么是Web服务器?1.2 静态资源和动态资源1.3 常用服务器产品2. Tomcat的安装2.1 下载2.2 解压安装2.3 Tomcat的目录结构2.4 Tomcat服务器的启动和关闭3.项目部署及访问静态资源3.1 创建项目3.2 web项目部署1.概念 1.1 什么是Web服务器&#xff1…

Vue 官方文档2.x教程学习笔记 1 基础 1.4 模板语法 1.4.2 指令

Vue 官方文档2.x教程学习笔记 文章目录Vue 官方文档2.x教程学习笔记1 基础1.4 模板语法1.4.2 指令1 基础 1.4 模板语法 1.4.2 指令 指令 (Directives) 是带有 v- 前缀的特殊 attribute。 指令 attribute 的值预期是单个 JavaScript 表达式 (v-for 是例外情况)。…

【servelt原理_14_Session对象】

Session对象(重点) 1.Session概述 Session用于记录用户的状态。Session是指在一段时间之内,单个客户端与Web服务端的一连串的交互过程。在一个Session中,客户可能会多次请求访问各种不同的服务器资源 2.Session原理 服务器会为每一次会话分配一个Ses…

3.10、以太网交换机的生成树协议 STP

1、如何提高以太网的可靠性? 若交换机 A 与交换机 B 之间的链路故障 若交换机 A 与交换机 B 和 交换机 C 之间的链路都出现故障 则原来的以太网,变成了三个独立的较小的以太网,它们之间无法通行 1.1、冗余链路提高可靠性 添加冗余链路\col…

Sentinel源码解析-源码环境搭建

文章目录前言一、源码环境搭建1.从github上clone下来sentinel的源码仓库到本地:2. 这里我们想学习1.6版本的sentinel源码,所以切换git分支到release-1.63. 启动sentinel-dashboard:4. 登陆dashboard:5. 启动demo项目:6…

备忘录APP源码和设计报告

摘 要 【关键词】备忘录APP;SQLite数据库;Java语言;Android Studio,Activity,Intent,BaseAdapter 本项目是通过Android Studio开发的一款备忘录手机app,有欢迎页面,登录页面&#x…

MybatisPlus的CRUD接口

create、read、update、delete一、insert 1、插入操作 注意:数据库插入id值默认为:全局唯一id 2、主键策略 (1)ID_WORKER MyBatis-Plus默认的主键策略是:ID_WORKER 全局唯一ID (2)自增策略 要想…

git分支详解——记住这些指令能帮助你解决大部分git的分支问题

Github 之 分支 branch 操作之 查看分支/创建分支/切换分支/提交分支/删除分支/合并分支 等操作 一、简单介绍 二、查看分支 1、查看本地所有分支:git branch 2、查看远程有哪些分支:git branch -r 3、查看所有分支(本地和远程的)…

Egg 1. 快速开始 Quick Start 1.3 一步步 Step by Step 1.3.3 添加静态资源 1.3.4 添加渲染模板

Egg Egg 本文仅用于学习记录,不存在任何商业用途,如侵删 文章目录Egg1. 快速开始 Quick Start1.3 一步步 Step by Step1.3.3 添加静态资源1.3.4 添加渲染模板1. 快速开始 Quick Start 1.3 一步步 Step by Step 1.3.3 添加静态资源 Egg 有一个名为stat…

【K8S系列】第十讲:kubectl 命令大全

目录 序言 1.基本介绍 1.1 命令格式介绍 2 基础命令 2.1 create 2.2 delete 2.2.1 根据yaml删除资源 2.2.1 根据名称删除资源 2.3 get 2.3.1查看pod列表 2.3.2 查看node 2.3.3 查看svc 2.3.4 查看all 2.3.5 查看ns 2.3.4 查看deploy 2.3 run 2.4 explain 2.…

基于PHP+MySQL珠宝销售网站的设计与开发

大多数时候珠宝是一种身份和高贵的象征,一个价值不菲的珠宝会给人一种高贵的感觉,同时珠光宝气也是人们非常喜欢的一种氛围,尤其是对女生来说,那种金光闪闪的东西总是会在无形中吸引她们的注意力,但是很多时候人们只能到商场或者专卖店购买珠宝,这种珠宝一方面鱼龙混杂,以次充好…

tinymce富文本编辑器的使用

tinymce富文本编辑器的使用 1、基本介绍 tinymce富文本官网:https://www.tiny.cloud/ 中文文档:http://tinymce.ax-z.cn/ tinymce-npm地址:https://www.npmjs.com/package/tinymce tinymce英文文档-示例地址:https://www.tin…

沟通管理风险管理采购管理@相关方管理

沟通管理目录概述需求:设计思路实现思路分析1.沟通管理绩效报告提供资源2.管理沟通3.监督沟通风险管理规划风险管理识别风险定性风险分析:定量分析风险规划风险应对实施分享应对监督风险采购管理:12.1 规划采购的管理12.2 实施采购控制采购相…

Bugku CTF杂项0和1的故事——01字符串生成二维码

个人说明 备赛半月后,因大多都是Web方向,于是自己将主要目标放在Misc和CryPto上,因为较之逆向和二进制更容易上手。 题目链接 1和0的故事 - Bugku CTF 题目简介如上,打开后是25X25的01字符串,先讲解正确高效做法&a…

SpringBoot 自动装配原理

什么是自动装配 springboot 定义一套接口规范,这套规范规定:springboot 在启动时会扫描外部引用 jar 包中的 META-INF/spring.factories 文件,将文件中配置的类型信息加载到 spring 容器,并执行类中定义的各种操作对于外部 jar 来…

Java并发编程—java内存模型1

文章目录Java内存模型的基础并发编程模型的两个关键性问题1、线程之间如何通信?(问题1)2、进程之间如何通信?(问题2)线程间通信机制:共享内存、消息传递1、共享内存2、消息传递java内存模型抽象结构指令重排序并发编程模型的分类happens-befo…

资料库的webrtc文件传输

一、一个看似简单的事情往往不简单 一个简单的事情往往会倾注你的心血,也许你看到很简单往往其实没那么简单;其实想想今年业余时间的大把代码,真正能成品的好像并不多。 马上年底了,写下这篇文章。每一行程序就像写小说一样&…