提示:本文主要记录了在开发过程中用到的一些函数以及它的常用语法,主要目的是整理记录,不全面的地方还请各位大佬批评指正!
1、xlsread 读取Excel电子表格文件
- 语法
- num = xlsread(filename)
读取名为 filename 的 Microsoft Excel电子表格工作表中的第一个工作表,并在一个矩阵中返回数值数据。
- num = xlsread(filename,sheet)
读取指定的工作表。
- num = xlsread(filename,xlRange)
从工作簿的第一个工作表的指定范围内读取数据。使用 Excel 范围语法,例如 'A1:C3'。
- num = xlsread(filename,sheet,xlRange)
读取指定的工作表和范围。filename可以直接右键文件复制文件地址
2、textscan 从文本文件或字符串读取格式化数据
- 语法
- C = textscan(fileID,formatSpec)
将已打开的文本文件中的数据读取到元胞数组 C。该文本文件由文件标识符 fileID 指示。使用 fopen 可打开文件并获取 fileID 值。完成文件读取后,请调用 fclose(fileID) 来关闭文件。
textscan 函数在整个文件中按 formatSpec 重复扫描数据,直至 formatSpec 找不到匹配的数据时才停止。目前本人在开发过程中只用到了这一个语法,具体使用案例在下面有介绍。具体formatSpec有哪些,具体用什么表示,需要自行去MATLAB查看
3、dir 列出文件夹内容
- 语法
- listing = dir(name)
返回 name 的属性。具体返回文件夹下的文件名、所属文件夹、创建日期以及字节数等信息
4、fullfile 从各个部分构建完整文件名
- 语法
- f = fullfile(filepart1,...,filepartN)
根据指定的文件夹和文件名构建完整的文件设定。在 Windows® 平台上,文件分隔符为反斜杠 (\)。本人是配合dir函数使用该函数,具体使用案例在下面有介绍
5、fopen 打开文件
- 语法
- fileID = fopen(filename)
打开文件 filename 以便以二进制读取形式进行访问,并返回等于或大于 3 的整数文件标识符。该文件标识fileID可以在textscan函数中使用,具体见下文使用案例
6、fclose 关闭一个或所有打开的文件
- 语法
- fclose(fileID)
关闭打开的文件。
- fclose('all')
关闭所有打开的文件。
7、findpeaks 寻找局部最大值
- 语法
- pks = findpeaks(data)
寻找数据data中的最大值并返回。寻找最大值的方法是通过对比该值前后两个点来判断的。无法找出位于端点处的最大值
- [pks,locs] = findpeaks(data)
返回数据data中的最大值以及最大值索引。
8、diff 差分和近似导数
- 语法
- Y = diff(X)
计算沿大小不等于 1 的第一个数组维度的 X 相邻元素之间的差分:
- 如果 X 是长度为 m 的向量,则 Y = diff(X) 返回长度为 m-1 的向量。Y 的元素是 X 相邻元素之间的差分。
- 如果 X 是不为空的非向量 p×m 矩阵,则 Y = diff(X) 返回大小为 (p-1)×m 的矩阵,其元素是 X 的行之间的差分。
9、find 查找非零元素的索引和值
- 语法
- k = find(X)
返回一个包含数组 X 中每个非零元素的线性索引值。
- 如果 X 为向量,则 find 返回方向与 X 相同的向量。
- 如果 X 为多维数组,则 find 返回由结果的线性索引组成的列向量。
使用时也可以利用该函数寻找数据中满足条件的值的索引值,例如find(x > 100)
10、sort 对数组元素进行排序
- 语法
- B = sort(A)
按升序对 A 的元素进行排序。
- 如果 A 是向量,则 sort(A) 对向量元素进行排序。
- 如果 A 是矩阵,则 sort(A) 会将 A 的列视为向量并对每列进行排序。
- B = sort(A,dim)
对A的每一列或每一行元素进行排序。
- dim = 1,对A的每一列元素进行排序。
- dim = 2,对A的每一行元素进行排序。
- B = sort(A,dim,direction)
按照指定方式对A的每一行或每一列元素进行排序。'ascend' 表示升序(默认值),'descend' 表示降序。dim = 1,对A的每一列元素进行排序,dim = 2,对A的每一行元素进行排序。如果不设置升序降序,默认为升序,默认dim = 1
11、fft 快速傅里叶变换
- 语法
- Y = fft(X)
用快速傅里叶变换 (FFT) 算法计算 X 的离散傅里叶变换 (DFT)。
- 如果 X 是向量,则 fft(X) 返回该向量的傅里叶变换。
- 如果 X 是矩阵,则 fft(X) 将 X 的各列视为向量,并返回每列的傅里叶变换。
- Y = fft(X,n)
返回 n 点 DFT。如果未指定任何值,则 Y 的大小与 X 相同。
- 如果 X 是向量且 X 的长度小于 n,则为 X 补上尾零以达到长度 n。
- 如果 X 是向量且 X 的长度大于 n,则对 X 进行截断以达到长度 n。
- 如果 X 是矩阵,则每列的处理与在向量情况下相同。
12、mod 除后的余数(取模运算)
- 语法
- b = mod(a,m)
返回 a 除以 m 后的余数,其中 a 是被除数,m 是除数。mod(a,0) = a
可以利用该函数判断数值的奇偶性,如果mod(a,2) = 0,则说明a为偶数,如果mod(a,2) = 1,则说明a是奇数
13、length 最大数组维度的长度
- 语法
- L = length(X)
返回 X 中最大数组维度的长度。对于向量,长度仅仅是元素数量。对于具有更多维度的数据,长度为 max(size(X))。空数组的长度为零。
14、hex2dec 将十六进制整数的文本表示转换为双精度值
- 语法
- D = hex2dec(hexStr)
将由 hexStr 表示的十六进制整数转换为等效的十进制数,并将其以双精度浮点值形式返回。
15、cell 元胞数组
- 语法
- C = cell(n)
返回由空矩阵构成的 n×n 元胞数组。个人理解,元胞数组每一位都是一个独立的存储单元,可以存储不同类型的数据
访问元胞数组的内容需要用{},例如C = a_cell{1,1},将元胞数组a_cell中第一行第一列的元素赋给C,花括号中第一个数代表行,第二个数代表列
16、subplot 在各个分块位置创建坐标区
- 语法
- subplot(m,n,p)
将当前图窗划分为 m×n 网格,并在 p 指定的位置创建坐标区。MATLAB按行号对子图位置进行编号。第一个子图是第一行的第一列,第二个子图是第一行的第二列,依此类推。如果指定的位置已存在坐标区,则此命令会将该坐标区设为当前坐标区。m为行,n为列
17、plot 绘制二维图像
- 语法
- plot(X,Y)
创建 Y 中数据对 X 中对应值的二维线图。
- plot(X,Y,LineSpec)
设置线型、标记符号和颜色。如果没有通过程序设定每条线的颜色,默认顺序是蓝色、红色、橙色、紫色、绿色,再往下本人没再使用
18、title、xlabel、ylabel函数
分别为图像、x轴和y轴添加文字描述。
19、legend 在坐标区上添加图例
20、grid on和hold on语句
- grid on:绘图时显示网格。
- hold on:添加新绘图时保留当前绘图
21、提取矩阵某一列或某一行
- A = B(1,:),表示提取B的第一行。
- A = B(:,1),表示提取B的第一列。
使用时不要漏掉,
22、具体使用案例1:从txt文件中按格式提取数据
该程序为将指定文件夹下的所有text中的数据读取出来并按文件存储到元胞数组中,text中的数据以空格为间隔
file = dir("D:\test"); % 扫描该文件夹中的所有子文件
% 注意:前两个是无意义的
subfile_Num=length(file); % 获取子文件总数(前两个无效)
for i = 3 : subfile_Num
%*******************************数据读取**********************************%
subfile = fullfile(file(i).folder,file(i).name); % 拼出第一个子文件路径
subfileID = fopen(subfile); % 打开第一个子文件
dataraw_cell(i-2) = textscan(subfileID,'%s'); % 以空格为标识提取数据
fclose(subfileID); % 关闭文件
end