最近做实验需要使用matlab导入并处理csv文件数据,在此之前对matlab的使用并不熟悉,所以趁着撰写博客的机会总结巩固一下。
1、脚本程序清除命令:
clc:清空命令行窗口的内容,对编辑器及工作区的内容无影响。
close与close all:两者功能一致,前者是关闭当前Figure窗口;后者是关闭所有Figure窗口
clear与clear all:两者功能相近,前者是清除工作区的所有变量;后者是清除所有的变量、函数及运行文件等
一般在撰写脚本程序前,使用clc,clear all,close all命令,即可使程序运行前完全复位。
2、文件的导入处理:
matlab有丰富的文件导入函数,比如load、importdata、save、textscan、read函数等等,这里总结一下importdata函数的用法:
importdata函数可以从txt、csv、excle及图片文件中导入数据,其常用的使用形式如下:
data = importdata(filename);
data = importdata(filename, delimiter);
data = importdata(filename, delimiter, headerlinesIn );
其中,data用来存储读取的文件数据,importdata函数将数据导入到一个结构体变量中,而文本与数字分别导入到结构不同的属性中:数值导入到矩阵,文本导入细胞数组。filename为文件名,delimiterIn 为字符分隔符;headerlinesIn 为文件头的行数。
3、文件数据查找匹配:
matlab提供了三个正则表达式函数:
regexp函数:用于对字符串进行查找,大小写敏感;
regexpi函数:用于对字符串进行查找,大小写不敏感;
regexprep函数:用于对字符串进行查找并替换
常用的函数形式如下:
regexp(str,expression,‘match’); 从str字符串中匹配并返回expression表达形式的字符串,区分大小写。
regexp(str,expression,‘split’); 将str字符串按expression表达形式进行分割
regexpi(str,expression,‘match’); 从str字符串中匹配并返回expression表达形式的字符串,不区分大小写。
regexprep(str,expression1,expression2); 将str字符串中的expression1表达式替换为expression2。
举例:
tmp=regexp(str, ‘,’ ,‘split’); %正则表达式,将str字符串按’,'进行分割,结果存在tmp中
regexp(str, ‘abc’, ‘match’)); %从str中开始匹配符合abc的表达式
regexprep(str, ‘abc’, ‘a’)); %将str中的’abc’字符替换为a
注意:
. 表示匹配任何单字符(除换行符 \n 之外),*表示贪婪模式。比如a.*b,它将会匹配字符串中以a开始,以b结束的最长的字符串。如果用它来搜索字符串“aabab”的话,它会匹配整个字符串aabab。这被称为贪婪匹配。
4、图形绘制:
matlab中有丰富且强大的图形绘制函数,其中应用最广泛的为plot函数,plot函数的常用形式为plot(X)、plot(X,Y)、plot(X,Y,…),其中XY为长度相同的向量,分别存储Figure图中的X轴与Y轴坐标。plot函数中可以添加各种绘图属性,比如:
LineWidth——指定线宽
MarkerEdgeColor——指定标识符的边缘颜色
MarkerFaceColor——指定标识符填充颜色
MarkerSize——指定标识符的大小
注意上面四个属性是针对当前坐标系中所有曲线的。而针对绘图中的线型属性如下:
其他的图形设置比如:
title(’Figure名称’); 为图形加入标题
text(x,y,’图形说明’); 在指定x、y坐标加入说明
xlabel(’x轴说明’);
ylabel(’y轴说明’);
axis on/off ; 显示/取消坐标轴
axis equal; xy轴上的各个刻度线的增量相同
grid on/off 开启/关闭坐标轴网格线
示例:
point_X=[x1,X_aim,x2]; %point_X=[0, 62.71, 100]
point_Y=[y1,Y_aim,y2]; %point_Y=[0, 16.80, 0]
plot(point_X, point_Y, ':^r', 'markersize',8); %点线,上三角标记,红色,标记大小8
title('这是一张figure图'); %标题
xlabel('x轴坐标'); %轴加备注
ylabel('y轴坐标');
text(X_aim+2,Y_aim+1,'1'); %指定坐标加备注
text(x1+2,y1,'2');
text(x2-4,y2,'3');
axis equal %xy轴上的各个刻度线的增量相同
grid on %坐标轴加网格线