matlab常用代码(读取文件、批量导入数据、与或非)
学习matlab使用过程中遇到的各种常见小操作,放在这里权当记录,持续更新中。包括批量导入数据、读取/写入不同类型的文件、与或非、cell、randperm的使用等
一、常见函数或小技巧
1. 记录程序运行时间:
函数tic、toc。 tic放在要记录时间的程序的开头,toc放在末尾
2. 常见函数
1) mean用法:
默认是对每一列求平均值,mean(x,2)是对每一行求平均值。很多函数都是同理,size(x,1)就是求矩阵x的行数,size(x,2)就是求列数;在一个数据文件中,提取矩阵第一列是 x(:,1),提取第一行x(1,:); sum(x,1) 将矩阵按列求和,sum(x,2) 按行求和
2) ceil:朝正无穷大四舍五入
round(x) :将 x 的每个元素四舍五入为最近的整数。
>> ceil(2.5)ans =3
3) flipud:实现矩阵的上下翻转
如果 A 是一个列向量,则 flipud(A) 返回一个相同长度的向量,其元素的顺序颠倒。如果 A 是一个行向量,则 flipud(A) 只返回 A。
>> A=(1:3)'
>> B = flipud(A)
B =321
fliplr 沿垂轴翻转矩阵
transpose 沿主对角线翻转矩阵
4) horcat 和vercat
horcat(A,B) % 水平串联数组,即X=[A,B],等同于cat(1,A,B)
vercat(A,B) % 垂直聚合数组, 即X=[A;B],等同于cat(2,A,B)
5) qr 矩阵正交分解
6) snapnow 拍摄最近生成的图像或绘图的快照,以包括在发布文件中。快照显示在包含 snapnow
命令的代码节的末尾。
7) bsxfun: 两个数组间元素逐个计算.
C=bsxfun(fun,A,B) %fun是函数句柄或者m文件,也可以为如下内置函数 :@plus 加 @minus 减 @times 数组乘 @rdivide 左除 @ldivide 右除
3. struct
使用XX= getfield(文件名, '结构体中字段名'),获取数据。
4.cell的使用
保存cell:
例子:
save('c6001.mat','dta'); % 将dta以.mat格式 命名为c6001.mat并保存到当前目录
save('dta'); % 将dta以.mat格式保存到当前目录,文件名为dta.mat
读取cell:
1.X= C(s)
使用这种"()“形式的返回的是cell类
2.X = C{s}
使用这种”{}"形式的返回的是cell中的内容
要取Cell(命名为C)的第X列元素,可用cell2mat(C(:,X))直接读为矩阵
举例:
>> A=[1,2,3,4];
B=[5];
C=[6,7];
p={A,B,C};
>> p{1}(1,2)ans =2
5.与& 或| 非~ 与 运算关系符
1)A&B
(i)首先判断A的逻辑值,然后判断B的值,然后进行逻辑与的计算。
(ii)A和B可以为矩阵(e.g. A=[1 0],B=[0 0])。
2)A&&B
(i)首先判断A的逻辑值,如果A的值为假,就可以判断整个表达式的值为假,就不需要再判断B的值。
(ii)A和B不能是矩阵,只能是标量。
3)~:not
~(A) 返回与 A
大小相同的逻辑数组。如果 A
中元素为零值,则数组中对应元素为逻辑值 1
(true
) 值;如果 A
中元素为非零值,则数组中对应元素为逻辑值 0
(false
)。
运算关系符:>(大于)、 >=(大于或等于)、 ==(等于)、~=(不等于)
6. 命令窗口(Command Window)中常用快捷键或命令:
(用【】表示键盘上的快捷键)
1.【上、下键】――切换到之前、之后的命令,可以重复按多次来达到你想要的命令
2. clc――清除命令窗口显示的语句,此命令并不清空当前工作区的变量,仅仅是把屏幕上显示出来的语句清除掉
3. clear――清空当前工作区的变量命令,常用语句clear all来完成
4. close ―― 删除指定图窗, 常用close all来完成,另外,close all hidden 删除包括句柄隐藏的参数(更强有力的删除)
5.【Tab】键――:在command窗口,输入一个命令的前几个字符,然后按tab键,会弹出前面含这几个字符的所有命令,找到你要的命令,回车,就可以自动完成。
示例:
6.【Ctrl+C】(或【Ctrl+Break】)――在matlab程序运行过程中,可能由于程序编写的失误,导致程序不停的运行,在命令窗口输入“Ctrl+C”可以将运行的程序停下来,而不需要将整个Matlab程序关掉。不过进行此操作的前提是能够激活切换到命令窗口才行。
7. format
format compact %隐藏过多的空白行以便在一个屏幕上显示更多输出。事实上,不少人直接会把2.3.4.7这几个放在代码的开头
format long %将输出格式设置为长固定十进制小数点格式并显示 pi 的值
close all;clear;clc
format compact
7. 在编辑器(Editor)中常用快捷键或命令:
1. 【Tab】(或【Ctrl+]】)――增加缩进(对多行有效)(可以进行输入补全操作
【Tab+Shift】――减少缩进(就是减少前面的空格,同样对多行有效
示例:
2.【Ctrl+[】--减少缩进(就是快捷删掉matlab代码前空格)(对多行有效)
3. 【Ctrl+I】--自动缩进(即自动排版,对多行有效)
4.【Ctrl+R】――注释(对多行有效)(选中需要注释%的行后按Ctrl+R)
5.【Ctrl+T】――去掉注释(对多行有效)
6.【F12】――设置或取消断点
7.【F5】――运行脚本中所有代码
8.【F9】——(Evaluate Selection)运行选中代码
9. 长串的注释
%{
注释内容。。。
。。。
%}
10.【Ctrl+F】-- 查找替换
有时想要把写好的参数换个名字,手动选择非常费劲,查找替换简洁方便
选中要查找的名字-【Ctrl+F】-输入要替换的名字
二、常见程序代码
1. 在MATLAB中读取同一路径下文件,批量导入数据:
D = dir('E:\matlab\SVM_CSDN\test_c1\c1\*.csv');
for i = 1 : length(D)
load(['E:\matlab\SVM_CSDN\test_c1\c1\' D(i).name]);
end
或者:
file=dir('E:\matlab\SVM_CSDN\test_c1\c1\*.csv');
for n=1:length(file) temp=dlmread(['E:\matlab\SVM_CSDN\test_c1\c1\',file(n).name],' ',1,0);eval([file(n).name(1:end-4),'=temp;'])
end
2.读取不同类型的文件
(1)读取mat文件:
load('文件名') % 等效于 load 文件名
load('位置\文件名')
如:
load features
load('features.mat')
load('features.mat', 'featotal') % 有多个mat文件只导入其中一个
注:若使用load提取的数据类型是结构体struct
如果只想要提取一个mat文件可以用下面代码
% 用 struct2cell 将 struct 转换为 cell 类型,再用 cell2mat 转换为数组类型
raw_data =cell2mat(struct2cell(load('data.mat')));
或者:
raw_data =struct2array(load('data.mat')));
(2)读取xlsx 文件:xlsread('路径\数据名')
例如:train=xlsread('E:\matlab\datasets\PHM 2010\test_c1\分类数据.xlsx');
(3)读取csv 文件:
1) A = csvread('filename')
filename:文件名,将数据读到矩阵A中。如: c1=csvread('E:\matlab\datasets\PHM 2010\c1\c_1_008.csv');
2) A = csvread('filename', row, col)
开始读取位置的行号(row)和列号(col)。这里,行号、列号以0开始计数。也就是说,row=0, col=0表示从文件中第一个数开始读。
3) A = csvread('filename', row, col, range)
range限定了读取的范围。range = [R1 C1 R2 C2],这里(R1,C1)是读取区域的左上角,(R2,C2)是读取区域的右下角。在使用这种方法时,要求row, col等于range中的前两项。
注:csv是最通用的一种文件格式,它可以非常容易地被导入各种PC表格及数据库中,csv文件用记事本和excel都能打开。csvread函数只适用于用逗号分隔的纯数字文件,即要求csv文件中只能包含数字。另外,csv文件中的空项,读到矩阵中时,会初始化为0.
(4) 读取txt文件:
A = importdata('filename') % 此函数只导入数据
data = A.data; %读取非元胞的数据
也可以用load
注:当导入.txt文本时,中文出现乱码时,在前面添加以下代码即可解决。
feature('DefaultCharacterSet', 'UTF8'); % 使得matlab支持utf-8编码
3. 写入不同类型的文件
(1)写入xlsx 文件:xlswrite('Excel路径+Excel的名称','需要输出的矩阵名称','工作表名称')
例子:
test = [1 2 3;4 5 6;7 8 9;10 11 12];
xlswrite('test.xlsx',test,'Sheet2')
(2)写入mat文件:save('路径\文件名','待保存的文件')
例如:
save A; %将当前工作区中的所有变量以MAT文件保存到A中。如果A已存在,save 会覆盖该文件。
save('A.mat'); % 与 save A 或 save A.mat 等效
save('file1.mat','A'); %将变量A保存到当前文件夹中的文件
save('E:\matlab\file1.mat','A'); %将变量A保存到指定文件夹中的文件
load E:\matlab\test\c_6\c6_wear.csv;
save wear.mat; %注意这里.csv变成了.mat
上面可以发现load完数据后可以使用save改变文件的后缀格式
注意:切记不能写为save(name, a),因为matlab的save函数是通过字符串去寻找工作区里的变量。所以一定要在变量上面加上 ' '。
4. 批量为文件命名
1) eval函数
R=[1 2 3;4 5 6; 7 8 9];
for i=1:3 eval(['T',num2str(i),'=','R(i,:)',';']); % 分别令T1=[1 2 3]...
end
2) sprintf函数
numFiles = 3;
for n = 1:numFilesrandomData = rand(n);currentFile = sprintf('myfile%d.mat',n);save(currentFile,'randomData') % 直接将文件命名后保存
end
3) strcat
wd_path= 'C:\Users\Administrator\Desktop\1.14\'; %文件路径
Newexcel_path='C:\Users\Administrator\Desktop\1.13\';
files = dir(strcat(wd_path,'*.txt')); %%dir('.')列出当前目录下所有子文件夹和文件%
len = length(files); %文件的长度
for i=1:lenoldname = files(i).name;newname=strcat('1.',int2str(i+54),'.txt');command = ['rename' 32 oldname 32 newname];status = dos(command);movefile(newname,Newexcel_path);
end
5. 数据归一化处理:
把每组数据都变为-1~+1之间的数,所涉及到的函数有premnmx ,
post mnmx , tramnmx。详见主页“数据归一化 normlization.m 及与mapminmax区分”
6. 对一组数据随机排列 randperm
randperm:将一列序号随机打乱,序号必须是整数。
P=randperm(N) 返回一个包含N个在1到N之间产生的随机元素的向量
p = randperm(N,k) 从1到N的数字序列里面随机返回k个数
想对一组数据随机重排,来提高计算结果的普遍性和精度:
temp = randperm(size(X,1));
P_train = NIR(temp(1:50),:);
P_test = NIR(temp(51:end),:);
举例:
>> a=randperm(6)a =3 4 5 2 6 1>> m=[1,2,3,4,5,6;96,5,4,3,2,1]m =1 2 3 4 5 696 5 4 3 2 1>> b=m(:,a(1:5))b =3 4 5 2 64 3 2 5 1
7. 添加路径和删除路径
addpath(genpath('要添加的路径')) % 添加目录到path
addpath(genpath(pwd)) % 将当前文件夹下的所有文件夹都包括进调用函数的目录
rmpath(pwd) % 删除当前文件夹的路径
rmpath(genpath(pwd)) % 移除当前文件夹以及所有子文件夹的路径
举例:
folder ='wavelet_pansharp'; % 要操作的文件夹
addpath( genpath(folder) );
pause(20); % 暂停20s,仅用来观察代码实现的效果。
rmpath( genpath(folder) );
8.函数调用
[y1,y2]=fuction(x1,x2,x3...)
[y1]=fuction(x1,x2,x3...)
[,y2]=fuction(x1,x2,x3...)
9. 寻找两矩阵中不同的元素
i=find(X1~=X2); % 得出矩阵对应位置
9.转)matlab批量处理数据
(12条消息) matlab批量处理excel(CSV)文件数据_好玩的Matlab的博客-CSDN博客_matlab批量读取csv文件
(12条消息) matlab自动读取目录下的所有文件数据,并保存为.mat文件_clw_18的博客-CSDN博客_matlab数据保存为mat
(12条消息) 傻瓜攻略(十)——MATLAB实现.mat文件内部变量的批量处理_素观江湖真的博客-CSDN博客_批量处理mat文件
参考链接:
【新提醒】写给MATLAB新手的几句话(值得一看)|论坛帮助|MATLAB技术论坛 - Powered by Discuz! (matlabsky.com)
MATLAB 如何导入.txt文本_WW、forever的博客-CSDN博客_matlab导入txt数据
如果对你也有帮助 点个赞支持一下吧
matlab常用代码(读取文件、批量导入数据、与或非)相关推荐
- java实现excel文件批量导入数据
具体实现: 以学生信息为例,将Excel模板信息配置在XML文件中,通过POI实现对excel文件读取操作,然后将读取的数据插入数据库中.具体思路是将模板信息配置在xml中,在项目启动时,通过spri ...
- java 导出文件上传模板,上传Excel文件批量导入数据
后端代码 controller层 @RequestMapping(value = "/importExcel", method = {RequestMethod.POST, Req ...
- 微信小程序 -- 数据库数据excel文件批量导入
一.excel文件批量导入数据到数据库 1.创建node.js函数upload,点击upload右键外部终端中安装类库 npm install node-xlsx 2.云函数代码 const clou ...
- mysql mongodb批量操作_mongodb批量导入数据
mongodb 命令行可以把sql文件批量导入数据,首先把sql文件加工称如下格式 zip.sql源文件 INSERT INTO POST(id,PostNumber,Province,City,Di ...
- 微信小程序云开发——常用功能2:操作云数据库一键批量导入数据(导入json文件)
微信小程序云开发--常用功能2:操作云数据库一键批量导入数据(导入json文件) 今天我们要添加100条数据.下面的过程是先创建一条记录,然后导出这条数据看json文件中是如何编辑字段的,然后仿照这个 ...
- matlab文件批量导入问题总结
matlab R2014a,想要批量导入一个文件夹中的3000个txt文件,文件命名规则为"0-0.txt"到"159-199.txt",每个txt文件有200 ...
- 怎么接收layui上传的文件_layui 上传文件_批量导入数据UI的方法
使用layui的文件上传组件,可以方便的弹出文件上传界面. 效果如下: 点击[批量导入]按钮调用js脚本importData(config)就可以实现数据上传到服务器. 脚本: /*** * 批量导入 ...
- django通过openpyxl操作excel文件,实现批量导入数据到数据库。
1.在一些场景中经常需要管理员批量导入数据,先将数据写到excel表格中,再上传到系统上,最后将excel中的数据批量导入到系统的数据库中. 1.1.test.xlsx文件数据格式 首行的名字:必须是 ...
- 批量导入数据将word文档转换成HTML文档
1.在批量导入数据里:第一步下载一个word文档模板,用户可以根据这个worm文档模板的要求去填写数据,填学好数据之后保存worm文档 2.在页面选择到word文档保存到from表单中,通过ajaxS ...
最新文章
- java list 多条件排序_java – 如何对arraylist执行一系列排序操作(多个排序条件)
- Zabbix Python API 应用实战
- windows下的NTP服务
- java 不重启部署_一篇文章带你搞定SpringBoot不重启项目实现修改静态资源
- 【快讯】阿里云张建锋:数据成为经济发展的新生产要素
- 数据结构与算法基础-数组
- Kafka学习(一)
- 关于vue el-button 动态获取个数并附不同的颜色
- 智能优化算法:闪电连接过程算法 - 附代码
- 自定义 Behavior - 仿新浪微博发现页的实现
- Android端记录跑步计步运动轨迹数据的App
- IT牛人---3IE工程师的传奇
- 基于微信小程序校园商铺系统获取(微信小程序毕业设计)
- 当面试官问你有什么想问的应该问些什么(技术开发类)
- 初中计算机 课题研究,初中信息技术课题怎么做
- 从今天起,我决定去掉cnzz统计
- c语言求绝对值作业,C语言求绝对值
- python秒表游戏代码_在pygam游戏中添加秒表
- 深度学习如何参加阿里的天池比赛和进入天池实验室
- matplotlib红橙黄绿青蓝紫(含颜色大全)