Python对比MATLAB波动数据分析优势

news/2024/6/17 15:25:29 标签: matlab, Python

在此,我们将测试两个类似的MATLAB和Python脚本,因为它们执行了一些基本的振动分析。这些脚本执行以下操作:

  1. 载入两列CSV
  2. 绘制所有数据
  3. 计算并绘制移动的1秒RMS电平
  4. 计算并绘制FFT

可以下载MATLAB和Python函数以及分析中使用的振动数据文件。我们将研究范围从数万个点到数千万个的数据集。

编程背景

Python_13">Python

一般而言,Python的优点是免费,开源且用途更广。 他们的NumPy和SciPy软件包具有与MATLAB类似的功能。 与MATLAB相比,Python是一种非常优雅且直观的编程语言。 它被创建为一种易于阅读的通用语言。 他们肯定成功了! 除数据分析外,Python被公认为是MATLAB满足其他编程需求的更好的替代方案。

MATLAB

另一方面,MATLAB是专门为线性代数运算开发的,可以使其更快地用于振动分析应用程序。 不利的一面是,该语言可能难以阅读/理解。 但是通常认为MATLAB封装更干净,因为您可以在其中获得一个广泛的函数库和一个集成开发环境(IDE)。 对于Python,您需要安装额外的程序包和IDE(尽管这不是一件大事!)。

代码

MATLAB振动分析功能

我希望Python和MATLAB之间的比较尽可能地精确。 我还希望它能够进行有用的分析,这是振动测试的一种典型方法。 我在MATLAB中编写了初始脚本,以提示用户输入CSV,加载CSV并绘制所有数据。 然后,我执行一个简单的移动RMS计算并绘制此图,然后对整个数据集和图进行FFT。 脚本将计算这些主要步骤中的每一个花费多长时间。 我正在研究移动RMS,因为这可以感觉到随着时间的推移振动的强度。 FFT是基本的第一振动分析步骤之一。

matlab">close all
clear all
 
%Get filename and path 
    [fname,pathname] = uigetfile('.csv','Select CSV File to Load, Plot, Compute RMS & FFT');
    disp([pathname fname])
 
%Load CSV
    tic %start timer
    data = csvread([pathname fname]); 
    fprintf('%4.2f seconds - Time to Load Data\n',toc)
     
%Determine variables and Display size
    [N,m] = size(data);
    t = data(:,1); %time in seconds
    x = data(:,2); %array of data for RMS and FFT
    Fs = 1/(t(2)-t(1));
    fprintf('%12.0f data points\n',N)
 
...

Python_50">Python振动分析功能:

困难的部分是用Python编写一个等效的脚本。下面提供了Pyhon脚本。 脚本的长度实际上是相同的。 Python脚本的加载时间要长几行,以将其加载到必要的库中。

import matplotlib.pyplot as plt
import numpy as np
from scipy.fftpack import fft
import tkinter as tk
from tkinter import filedialog
import time
 
#Prompt user for file
root = tk.Tk()
root.withdraw()
file_path = filedialog.askopenfilename(filetypes=[("Two Column CSV","*.csv")])
print(file_path)
 
...

振动数据文件

在此比较中,我们查看了7个不同的振动数据集。在我们的振动分析基础知识文中,对这些记录中的大多数进行了更深入的解释。前两个记录来自60秒的记录,其中振动台上的传感器以恒定的10g,100 Hz正弦输入振动。 一个文件来自MEMS加速度计,采样频率为400 Hz; 另一个来自于5,000 Hz的压电加速度计采样。

最后的两个记录着眼于我汽车(2008 Saab 93 2.0T)发动机的数据。 第一个记录(car_engine.csv)是我们的方法视频系列的一部分,该视频具有更多信息。 第二个也是最大的数据集(commute.csv)是当我将传感器安装到引擎上并记录我在早上通勤期间的振动时的情况,其中包括在高速公路上行驶。 我住在附近,所以录音只有20分钟,但是我以10,000 Hz采样,因此有超过1100万个数据点。

测试设置

我在工作计算机Dell Precision T3610上进行了所有测试。 它具有Intel Xeon 3.00 GHz处理器和8 GB RAM。 操作系统是Windows 7 Professional 64位。 我正在使用的MATLAB是64位R2014b。 我下载并运行了64位Python 3.5.2,NumPy 1.11.1和SciPy 0.18.0。

绘图

在下面单击以查看从两个脚本生成的振动分析示例图。 顶部来自MATLAB,底部来自Python。 从左到右,先绘制整个数据集,然后绘制移动RMS,然后绘制整个数据集的FFT。 您可以看到MATLAB和Python都在同一个地方。 但问题是他们多快到达那里?

详情参阅 - 亚图跨际


http://www.niftyadmin.cn/n/1226321.html

相关文章

java虚拟机 堆栈 对象存储区_「Java面试题第三期」JVM中哪儿会出现内存溢出?出现的原因是?...

内存溢出(OutOfMemory)经常简称为OOM,在jvm中主要分为方法区、堆、栈、本地方法栈、程序计数器这几部分,其中程序计数器是唯一不会出现OOM的,也就是说其他区域都会出现OOM。下面来分别说明几个区域出现OOM的情况及特征。1. java堆溢出(heap)J…

Arduino线性读取和设置位置

原理 电机驱动器速度控制 在此示例中,我们将使用Arduino和电机驱动器控制线性执行器的速度。 组件 接线 控制简述 线性执行器中的直流电动机需要大电流(高达5A),如果我们将线性执行器直接连接到Arduino,则此高电…

Arduino调节反馈式比例线性组件

当您需要了解执行器的确切位置时,就需要光学反馈系列。 它功能强大,可靠的执行器带有内置的光学传感器,可在您需要时提供反馈。 光反馈没有内置控制器,但确实提供了单相脉冲作为位置反馈信号,可以将其输入到诸如Arduin…

java猜字母讲解_JAVA语言中的经典案例:猜字母游戏

设计数据结构问题猜字母游戏规则为,随机产生5个按照一定顺序排列的字符作为猜测的结果,由玩家来猜测此字符串,玩家可以猜测多次,每猜测一次,由系统提示结果,如果猜测的完全正确则游戏结束,计算玩…

Raspberry Pi探索雾计算

在Raspberry Pi上使用Tensorflow Lite进行图像识别,对象和姿势检测。 雾(边缘)计算 Gartner将边缘计算定义为:“分布式计算拓扑的一部分,其中信息处理位于边缘附近-事物和人产生或消费该信息的地方。” 换句话说&…

java自行车起源_现代自行车的起源和它的发展历程

自行车,又称单车,脚踏车。英文名:bike、bicycle、拉丁文为Bicyoletta,是“快”和“步行人”的意思, 是一种以人力驱动的便携交通工具。它的发明和改进经历了漫长而复杂的历史过程。自行车的起源自行车的发展日新月异,从…

Python数值线性方程组

介绍 代数方程组的形式为 A11x1A12x2⋯A1nxnb1A21x1A22x2⋯A2nxnb2⋮An1x1An2x2⋯Annxnbn,(1)\begin{array}{c}A_{11} x_{1}A_{12} x_{2}\cdotsA_{1 n} x_{n}b_{1} \\A_{21} x_{1}A_{22} x_{2}\cdotsA_{2 n} x_{n}b_{2} \\\vdots \\A_{n 1} x_{1}A_{n 2} x_{2}\cdotsA_{n n} x…

java中的gridy_Java中GirdBagLayout布局管理器使用

构造函数:GirdBagLayout()建立一个新的GridBagLayout管理器。GridBagConstraints()建立一个新的GridBagConstraints对象。GridBagConstraints(int gridx,int gridy,int gridwidth,int gridheight,double weightx,double weighty,int anchor,int fill, Insets insets…