分类目录归档:MATLAB

关于Matlab 读取数据文件

最适合matlab的数据格式除了matlab的原生格式dat,我个人觉得.csv格式读取速度最快。

读写csv格式用dlmread,dlmwrite非常快。但是matlab 2019已经快放弃dlmread命令。新的替代命令是readmatrix。

readmatrix 的基本格式是

A = readmatrix(filename)
A = readmatrix(filename,opts)
A = readmatrix(___,Name,Value)
opts参数对于这个命令比较重要,在处理excel文件时比较有效。在使用该命令的时候可以采用预览模式
opts = detectImportOptions(‘airlinesmall_subset.xlsx’);
preview(‘airlinesmall_subset.xlsx’,opts)
然后进一步取数
opts.Sheet = '2007';
opts.SelectedVariableNames = [1:5]; 
opts.DataRange = '2:11';
M = readmatrix('airlinesmall_subset.xlsx',opts)
以上特别针对excel文件,对于普通txt, csv 文件,使用range 参数直接调整
data=readmatrix(filename,’range’,’2:9′);
例如此命令可以取表格中的第2到第9行数据。关于range的参数设置可以参考matlab的doc,里面有具体参数解释,非常详细。
readmatrix相比较于dlmread 最好的一点就是readmatrix可以读取含有文本的数据,这对于处理含有表头的原始测量文件非常有效。

 

如何在已经安装的matlab软件上添加模块

随着Matlab的安装包越来越大,我们在安装的时候需要稍微选择下以减小软件安装的体积。但是安装之后,如果我们需要新的模块怎么办呢。这里经过实践,可以从matlab的home菜单下的add-ons分菜单,然后搜索自己需要的模块就可以了,之后就是登陆和安装。enjoying。不用重新安装了。

新版本的ABAQUS2MATLAB发布了

用于32位Windows的Abaqus2Matlab v2.0刚刚发布!

新的32位ABAQUS2MATLAB插件可以从百度云盘下载地址:https://pan.baidu.com/s/1HdYQRvKubPBU7Z3du28rrQ

将Abaqus连接到Matlab的软件现在可以在Windows 32位平台上使用,旨在加快研究和工程的步伐。您现在可以从该软件的官方网站免费下载32位版本,包括但不限于64位版本,文档,示例和入门指南:http://www.abaqus2matlab.com/

感谢所有勤奋工作的Abaqus2Matlab社区,他们通过分享他们的经验,识别错误以及证明Abaqus2Matlab可用于工程研究的非常广泛的应用范围,为软件的各种改进做出了贡献!

其他资源
下载软件,其文档,示例和更多免费:http://abaqus2matlab.wixsite.com/abaqus2matlab/copy-of-downloads
在此处查看关于Abaqus2Matlab新闻的论坛:http://abaqus2matlab.wixsite.com/abaqus2matlab/forum/news-about-abaqus2matlab
在这里询问,讨论或者提出你的问题和/或Abaqus2Matlab的经验:http://abaqus2matlab.wixsite.com/abaqus2matlab/forum/abaqus2matlab-users-forum
查看原始公告:http://abaqus2matlab.wixsite.com/abaqus2matlab/forum/news-about-abaqus2matlab/abaqus2matlab-v2-0-for-32-bit-windows-has-just-been-released

关于Abaqus2Matlab
提出了一种新颖的软件,将Abaqus(一种复杂的有限元软件包)与Matlab(最全面的数学分析程序)连接起来。
这些众所周知的代码之间的接口不仅受益于Matlab的图像处理和集成图形绘制功能,而且还为结果后处理,统计分析和数学优化等众多可能性提供了新的机会。
Abaqus2Matlab作为源代码免费发布,目的是促进研究。

以下为新版本英文介绍

Abaqus2Matlab v2.0 for 32-bit Windows has just been released!
The software that connects Abaqus to Matlab and vice versa can now be used in Windows 32-bit platforms, aiming to accelerate the pace of research and engineering. You can now download the 32-bit version including but not limited to the 64-bit version, documentation, examples and getting started guide, all for free, from the official website of the software: http://www.abaqus2matlab.com/
Thanks to all the hard-working Abaqus2Matlab community who have contributed to various improvements of the software by sharing their experience, identifying bugs, and proving that Abaqus2Matlab can be used for a very broad scope of applications for engineering research!

Additional Resources
Download the software, its documentation, examples and more for free: http://abaqus2matlab.wixsite.com/abaqus2matlab/copy-of-downloads
Follow the forum for news about Abaqus2Matlab here: http://abaqus2matlab.wixsite.com/abaqus2matlab/forum/news-about-abaqus2matlab
Ask, discuss or suggest your problems and/or experiences with Abaqus2Matlab here: http://abaqus2matlab.wixsite.com/abaqus2matlab/forum/abaqus2matlab-users-forum
View the original announcement here: http://abaqus2matlab.wixsite.com/abaqus2matlab/forum/news-about-abaqus2matlab/abaqus2matlab-v2-0-for-32-bit-windows-has-just-been-released

About Abaqus2Matlab
A novel software is presented to connect Abaqus, a sophisticated finite element package, with Matlab, the most comprehensive program for mathematical analysis.
This interface between these well-known codes not only benefits from the image processing and the integrated graph-plotting features of Matlab, but opens up new opportunities in results post-processing, statistical analysis, and mathematical optimization, among many other possibilities.
Abaqus2Matlab is freely distributed as source code with the aim of facilitating research.

再论MATLAB的力学传感器测量信号处理,消除脉冲噪音

最近的传感器测量过程中发现,数据中出现了类似于脉冲数据(如下图所示),这对于数据处理产生了困难。

解决思路是采用MATLAB中的diff判断两个数据采集点的大小,如果两个数据采集点的大小过大的那么就删除原有数据点,同时用旁边的数据点替代。旁边数据点替代的过程中可以采用linear fitting。

下图展示了diff(y_data)后的数据图(脉冲附近的数据点之间的difference比较大)

下图展示了数据处理后的数据图,脉冲信号消除。

处理代码如下:

function new_data=flat_data(ori_data)
% the difference of the data point is fixed and is equal to 1
% then we will measure the difference of pressure between two data points
n_length=length(ori_data);
diff_y=abs(diff(ori_data));% absolute value
new_data=ori_data;% data initialization
span_end=1;
flag_start=1;
for i_data=1:n_length-1
    if diff_y(i_data)>100&&flag_start==1
        snap_start=i_data;
        span_end=n_length;
        flag_start=0;
    else
        if span_end>1&&diff_y(i_data)<100
            snap_end=i_data;
            length_span=snap_end-snap_start;
            span_y=ori_data(snap_end)-ori_data(snap_start);
            if abs(span_y)>0
                span_dif=span_y/length_span;
                new_data_rep=ori_data(snap_start):span_dif:ori_data(snap_end);% linear fitting
                new_data(snap_start:snap_end)=new_data_rep;
            else
                new_data_rep=ones(length_span+1,1)*ori_data(snap_start);
                new_data(snap_start:snap_end)=new_data_rep;
            end
            flag_start=1;
            span_end=1;
        end
    end
end

Matlab 一维中值滤波(信号处理)

matlab 中值滤波函数 medfilt1函数用于一维信号的处理。例如在动态压力测量时由于电路上的干扰会出现测量值发生突变,为了消除这种突变可以采用一维中值滤波的方法。

常用的两个命令如下。

  • y = medfilt1(x), 对于输入的向量采用3阶的一维滤波
  • y = medfilt1(x,n),对于输入的向量采用n阶的一维滤波
    效果如下图(MATLAB  help  medfilt1 参考页)。