学习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常用代码(读取文件、批量导入数据、与或非)相关推荐

  1. java实现excel文件批量导入数据

    具体实现: 以学生信息为例,将Excel模板信息配置在XML文件中,通过POI实现对excel文件读取操作,然后将读取的数据插入数据库中.具体思路是将模板信息配置在xml中,在项目启动时,通过spri ...

  2. java 导出文件上传模板,上传Excel文件批量导入数据

    后端代码 controller层 @RequestMapping(value = "/importExcel", method = {RequestMethod.POST, Req ...

  3. 微信小程序 -- 数据库数据excel文件批量导入

    一.excel文件批量导入数据到数据库 1.创建node.js函数upload,点击upload右键外部终端中安装类库 npm install node-xlsx 2.云函数代码 const clou ...

  4. mysql mongodb批量操作_mongodb批量导入数据

    mongodb 命令行可以把sql文件批量导入数据,首先把sql文件加工称如下格式 zip.sql源文件 INSERT INTO POST(id,PostNumber,Province,City,Di ...

  5. 微信小程序云开发——常用功能2:操作云数据库一键批量导入数据(导入json文件)

    微信小程序云开发--常用功能2:操作云数据库一键批量导入数据(导入json文件) 今天我们要添加100条数据.下面的过程是先创建一条记录,然后导出这条数据看json文件中是如何编辑字段的,然后仿照这个 ...

  6. matlab文件批量导入问题总结

    matlab R2014a,想要批量导入一个文件夹中的3000个txt文件,文件命名规则为"0-0.txt"到"159-199.txt",每个txt文件有200 ...

  7. 怎么接收layui上传的文件_layui 上传文件_批量导入数据UI的方法

    使用layui的文件上传组件,可以方便的弹出文件上传界面. 效果如下: 点击[批量导入]按钮调用js脚本importData(config)就可以实现数据上传到服务器. 脚本: /*** * 批量导入 ...

  8. django通过openpyxl操作excel文件,实现批量导入数据到数据库。

    1.在一些场景中经常需要管理员批量导入数据,先将数据写到excel表格中,再上传到系统上,最后将excel中的数据批量导入到系统的数据库中. 1.1.test.xlsx文件数据格式 首行的名字:必须是 ...

  9. 批量导入数据将word文档转换成HTML文档

    1.在批量导入数据里:第一步下载一个word文档模板,用户可以根据这个worm文档模板的要求去填写数据,填学好数据之后保存worm文档 2.在页面选择到word文档保存到from表单中,通过ajaxS ...

最新文章

  1. java list 多条件排序_java – 如何对arraylist执行一系列排序操作(多个排序条件)
  2. Zabbix Python API 应用实战
  3. windows下的NTP服务
  4. java 不重启部署_一篇文章带你搞定SpringBoot不重启项目实现修改静态资源
  5. 【快讯】阿里云张建锋:数据成为经济发展的新生产要素
  6. 数据结构与算法基础-数组
  7. Kafka学习(一)
  8. 关于vue el-button 动态获取个数并附不同的颜色
  9. 智能优化算法:闪电连接过程算法 - 附代码
  10. 自定义 Behavior - 仿新浪微博发现页的实现
  11. Android端记录跑步计步运动轨迹数据的App
  12. IT牛人---3IE工程师的传奇
  13. 基于微信小程序校园商铺系统获取(微信小程序毕业设计)
  14. 当面试官问你有什么想问的应该问些什么(技术开发类)
  15. 初中计算机 课题研究,初中信息技术课题怎么做
  16. 从今天起,我决定去掉cnzz统计
  17. c语言求绝对值作业,C语言求绝对值
  18. python秒表游戏代码_在pygam游戏中添加秒表
  19. 深度学习如何参加阿里的天池比赛和进入天池实验室
  20. matplotlib红橙黄绿青蓝紫(含颜色大全)

热门文章

  1. D2D,让通信更简单!
  2. 3dMax夜晚行车灯光轨迹一键生成插件TrafficTrails使用教程
  3. 插入U盘后 计算机未响应,电脑插入U盘后没有反应怎么办?
  4. 侵犯计算机软件著作权的行为,侵犯计算机软件著作权的行为有哪些?
  5. iPad闪屏跳动怎么回事?怎么解决?
  6. 记一次zookeeper连接慢的问题和解决方法
  7. 妇幼保健学习知识资料考试题及其规范标准答案
  8. Oracle ACE,一段不可思议的旅程
  9. 【考研数学】高等数学知识点整理——第一章 函数、极限、连续
  10. SOLIDWORKS零件与装配体模板制作