-
2020-05-25 15:39:04
文章目录
Matlab批量读取数据文件
初次使用Matlab解决问题,记录一下。
需求
首先说明一下需求,机器能够将18×18的数据矩阵保存到文件中,要做的是读取这个文件,去除首行的无关数据,最终输出矩阵各元素的方差。使用的工具是Matlab。
path = ('E:\Data\');%数据文件夹路径 namelist = dir([path,'*.wft']);%提取wft文件的文件信息 l =length(namelist);%wft文件的个数 for i = 1:l fullname{i} = [path,namelist(i).name];%保存路径+文件名=绝对路径 A = importdata(fullname{i});%将文件中的数据赋值到矩阵中 A (1,:) = [];%去除第一行的无用数据 b(i) = std2(A);%计算方差 end
解决思路,第一步是找到数据文件的相对路径,程序中首先读取文件目录,然后在用dir函数找到目录下面,该文件类型的所有文件。将文件个数赋值给l,方便后续循环计算方差。
第二步就是将文件中的数据值导入到矩阵中,主要参考了《matlab批量读取同一目录下的txt文件》首先找到文件的绝对路径,在使用importdata函数将数据导入,如果是xls文件可以使用xlsread函数。类似的还有load函数。
第三步是去除无关函数,这里参考了《matlab中矩阵删除一行或一列的方法》,去除了第一行无用数据。然后使用std2()函数计算矩阵方差。
循环第二、三步即可逐渐完成文件的逐一读取,以及方差的计算。缺憾
文件的实际保存形式是第一行为两个无用数据,从第二行开始是18×18的数据矩阵,使用本文中的方法,读取到的是163×2的矩阵,矩阵的行列收到了第一行数据的限制,虽然去除第一行后对结果的计算没有影响,但是应该有办法解决这个问题,猜测方法是首先通过zeros限定矩阵大小,再将数据导入,但是受限于水平,只能做到目前的样子。
更多相关内容 -
matlab批量读取文件
2013-09-20 10:41:05从一个文件夹下批量读取指定类型或者所有类型的文件,如所有的jpg图片,文件夹等,根据个人设置来获取读取结果,自己加限定,目前里面的实例是读取jpg图片 -
matlab 批量读取文件
2021-06-11 15:21:31%Matlab使用dir函数获得指定文件夹下符合要求的所有子文件夹和文件,并存放在在一种为文件结构体数组中 for n = 1:length(file0) A0_in(n,:) = load(['E:\Program\Matlab\SVM\test_data\branch\test\',file0(n).name...file0 = dir('E:\Program\Matlab\SVM\test_data\branch\test\*.txt');%Matlab使用dir函数获得指定文件夹下符合要求的所有子文件夹和文件,并存放在在一种为文件结构体数组中 for n = 1:length(file0) A0_in(n,:) = load(['E:\Program\Matlab\SVM\test_data\branch\test\',file0(n).name]); end
filename = 'E:\Program\Matlab\SVM\test_data\branch\test\'; file = dir(strcat(filename,'*.txt')); for n = 1:length(file) A_in(n,:) = load([filename,file(n).name]); end
其实上面这两个是一个意思,都可以用啦,不过第一个看起来不绕一点
就是先把指定文件夹下的所有文件读取到一个strut里面,这里面包括文件名,日期等等
然后循环就是,n为文件个数,读取这个struct里面属于name的一列,即文件名字,循环读取每一个文件名,并加载这个文件的内容
-
Matlab批量读取文件
2019-08-02 15:26:16Matlab循环读取文件 要读取一个文件并处理,只需要把文件路径写好就行了,但是我们有时候需要批量处理多个文件,这时候怎么办呢? 可以利用循环,每一次自动修改文件路径 for x = 1 : 5 %注意这里需要把x转换成 str... -
matlab批量读取处理文件
2021-04-14 21:23:49matlab需要读取一个文件夹下的多个子文件夹中的某种指定格式的文件,该如何批量操作呢? 首先,先介绍几个matlab中常用的函数 1. dir() 2. length() 3. isequal() 4. fullfile() 参考: ...matlab需要读取一个文件夹下的多个子文件夹中的某种指定格式的文件,该如何批量操作呢?
-
一. 常用函数介绍:
首先,先介绍几个matlab中常用的函数
1. dir()
Matlab使用dir函数获得指定文件夹下的所有子文件夹和文件,并存放在在一种为文件结构体数组中.
dir函数可以有调用方式为:- dir('.') 列出当前目录下所有子文件夹和文件
- dir('G:\Matlab') 列出指定目录下所有子文件夹和文件
- dir('*.m') 列出当前目录下符合正则表达式的文件夹和文件
例如:
文件夹结构如下:
代码:
maindir = 'E:\ACourse\大数据专题实践\LFcode\Sample_test'; subdir=dir(maindir)
结果,输出一个7*1的struct数组:
会发现, 多了两个文件夹, 分别是 '.' 和 '..' ,被隐藏了, 在写代码的过程中一定要考虑到这两个问价夹;
此外, 以上struct中的 name, folder, 等6个属性均可以被调用, 调用格式为 subdir.name, subdir.folder等, 其中name 和 isdir最为常用
- name 顾名思义,表示文件或文件夹的名字, 例如:
subdir(3).name
则 输出为第三个文件夹的名字:
如果想要得到某个文件夹下所有的某种指定格式的文件,可以通过如下方式获得:
f = dir('E:\ACourse\大数据专题实践\LFcode\Sample_test\*.docx') # 或者 maindir = 'E:\ACourse\大数据专题实践\LFcode\Sample_test'; subdir = fullfile(maindir, '*.docx'); f = dir(subdir)
结果:
- isdir 则是判别该内容类型是 目录(文件夹) 还是 文件, 若是 目录(文件夹) 则返回逻辑1或True, 若是 文件 则返回逻辑值0或False. 例如:
maindir = 'E:\ACourse\大数据专题实践\LFcode\Sample_test'; subdir = dir(maindir); subdir(3).isdir
结果:
2. length()
- l = length(x) % 返回向量的长度, 例如:
代码:
x = ['a' 'b' 'c']; l = length(x)
结果:
3. isequal()
- tf = isequal(A, B, ...) %如果输入数组是相同的,则tf=isequal(A, B, ...)返回逻辑1(真),否则返回逻辑0(假)。非空数组必须有相同的数据类型和大小。例如:
代码:
tf = isequal('aaa','aaa')
结果:
4. fullfile()
- f = fullfile(‘dir1’, ‘dir2’, …, ‘filename’) %fullfile构成地址字符串;
注意最后一个是filename, 要带文件名后缀 ,例如:
代码:
f = fullfile('G:\PLNet', 'Sample_test', 'raw.lfp')
输出:
-
二. 实例场景及代码
接下来, 给出一个最近遇到的实例场景及代码
1. 应用场景如下:
现在有上千张lfp格式的图片, 分别存放在PLNet下的每一个子问价夹中, 需要使用matlab批量依次对每一个lfp文件进行处理, 得到对应的bmp格式的文件,并保存在当前文件夹下
可以先将文件格式处理的过程封装成一个函数, 具体不用管, 就是一个如下样式的函数
function dataprocess(lfp文件地址, bmp文件保存地址) read , process, save 将lfp文件进行处理,并保存在当前文件夹内 实现上述功能
然后就是文件批量处理的过程, 定义一个主函数, 调用上述功能函数。
2. 具体代码如下:
maindir = 'E:\ACourse\大数据专题实践\LFcode\Sample_test\ss'; subdir=dir(maindir); for i = 1:length(subdir) if( isequal( subdir( i ).name, '.' ) || isequal( subdir( i ).name, '..' ) || ~subdir( i ).isdir ) % 如果不是目录 就跳过 continue; end subdirpath = fullfile(maindir, subdir(i).name, 'raw.lfp'); savepath = fullfile(maindir, subdir(i).name, 'raw.bmp') % read , process, save 将lfp文件进行处理,并保存在当前文件夹内 % function data_process(lfp文件地址,bmp文件保存地址) 实现上述功能 dataprocess(subdirpath, savepath); end
注意: 在定义的function dataprocess中, 一定要注意路径的问题, 不要随意改变路径, 或者随意执行打开某个文件夹的操作, 如果确实需要, 则一定记得在执行结束后要加上cd('..') 返回上级原目录的操作, 否则会出现主函数中 function dataprocess路径不对而无法找到的问题 。
参考:
https://www.cnblogs.com/smqh-bokeyuan/p/11406549.html
https://blog.csdn.net/loadqian/article/details/80656453
-
-
matlab 批量读取csv
2017-02-26 19:07:34matlab批量读取csv文件,csvread. -
matlab按日期读取某个文件
2020-12-04 14:13:19matlab读取某个采集生成的振动数据或其他数据,文件夹为当前日期,文件为传的参数.txt,数据为单列数据。 -
用matlab批量读取xml文件和jpg图片并对处理后的图片保存
2018-12-14 14:55:19xml中包含的是图片中缺陷区域的坐标,用matlab读取读取其中的信息,并批量读取图片,将缺陷区域保留,其余置黑,最后将处理后的图片保存到其他文件夹中 -
MATLAB图像批量读取.rar
2020-07-11 10:00:36《MATLAB批量读取路劲下图像》的附带代码。内容文中可以,没积分可直接到https://blog.csdn.net/xsz591541060/article/details/107280266中复制即可。 -
matlab批量读取excel表格数据并处理画图
2022-04-28 09:11:20批量读取全部sheet内容,可指定,并对无效内容处理,提取所需数据并画图 -
MATLAB批量读取操作CSV文件(含字符)的几种方法
2021-08-02 17:59:36这里一共给出了四种读取csv文件的方法,csvread,importdata,textscan和uiopen,个人觉得最好用的是最后一种 1.csvread M = CSVREAD('FILENAME') ,直接读取csv文件的数据,并返回给M,这时要求整个csv文件内容... -
matlab批量读取文件夹下的文件
2010-04-27 11:09:38在matlab中读取一个目录下的所有.wav文件 -
MATLAB怎么批量读取文件夹中的文件
2019-05-24 19:56:02今天给大家介绍一下MATLAB中如何批量读取文件夹中的文件,实现很简单,程序如下(比如我批量读取文件中的xlsx文件): str = 'G:\MATLAB Program\Project Program\数据\'; files = dir(strcat(str,... -
matlab读取bdf文件
2020-09-23 17:07:04matlab读取patran的bdf文件,以便修改patran内部载荷设置,通过读取其内部的数值,再在matlab中修改,最后改变patran载荷 -
MATLAB批量读取文件夹中的txt文件并保存
2020-12-16 13:14:26以下为matlab批量读取txt文件代码: List =dir('C:\Users\DELL\Desktop\data\*.txt'); %设置路径 for i=1:1:length(List) %挨个读入txt文件数据 A{i}=importdata(['C:\Users\DELL\Desktop\data\',List(i).name])... -
matlab批量读取文件的方法
2017-09-14 14:33:54matlab批量读取文件的两种方法 % 1.循环读取文件;针对文件名字有序 for i=1:4 str= strcat ('D:\data\tek', int2str(i) , '.xls') ; % 连接字符串形成图像的文件名 a{i}=xlsread(str); end ... -
matlab如何批量读取文件
2018-11-03 22:28:50此方法无需重命名文件,只需要把文件放在同一文件夹了即可。其方法是利用dir把目录下的的文件名保存的一个数组中,然后挨个调用就可以了。 clc;clear addpath('shuju') n=166; I=cell(1,n); file_path ='F:\zdmatlab... -
matlab批量读取dat
2021-04-18 09:42:58matlab如何生成数据dat文件_数学_自然科学_专业资料。第一种方法:sav...matlab中读取txt中数据 2页 1... 1页 2下载券 matlab批量读写数据 2页 1下载券 ......用MATLAB生成DAT文件 f1=10;f2=100;fs=400;N=400...supp... -
MATLAB 循环读取文件中TXT文件
2018-12-18 15:03:24生成的HEVC的txt文件众多,需要提取需要的bits 手动操作繁杂 针对多文件夹下多个相同的txt文件适用 -
MATLAB批量读取nc文件
2020-08-10 11:46:16MATLAB批量读取nc文件 clc;clear; datadir=’ D:\data’;%指定批量数据所在文件夹 filelist=dir([datadir,’*.nc’]);%指定批量数据的类型 for ii=1:length(filelist) filename=[datadir,filelist(ii).name]; value=... -
matlab批量打开NC文件_批量转tif
2018-11-16 20:32:04目前很多科学数据、气象数据都是NC格式,一般的软件无法打开NC文件,很难对其进行进一步处理。而我们直观且习惯的处理是图形化的tif,如利用ENVI,ARCGIS,ERDAS等,因此,ncToTif就很有必要 -
MATLAB批量读取Excel文件
2021-06-10 17:56:18最近需要处理大量数据,因为上位机原因,总是保存多个Excel文件,所以需要使用MATLAB批量读取Excel文件的方法,接下来就简单记录一下过程,供日后学习和大家参考。 如下图,是保存在“D:\饮水机\水箱\ADRC_ysm_... -
[转]matlab批量读取nc文件
2021-04-18 06:18:59读取单个nc文件的方法:clc,clear;ncid = netcdf.open('D:\precip.mon.1981-2010.ltm.nc','NOWRITE');%打开nc文件ncdisp('precip.mon.1981-2010.ltm.nc');%在命令窗中显示nc文件的变量PrecipData=ncread('precip.mon... -
求问怎样用matlab批量读取dat文件中的数据?在线等
2021-04-18 09:42:59求问怎样用matlab批量读取dat文件中的数据?在线等关注:137答案:2手机版解决时间 2021-02-24 23:26提问者终究是陌生了2021-02-24 12:03我的数据是在一个文件夹内,共10个dat文件,每个文件有四列,3000多行,都是双... -
MATLAB三种批量读取图片方式
2017-05-09 17:34:12MATLAB批量读取图片三种方法, -
【MATLAB】图像批处理:批量读取图像—>批量处理—>批量写入文件夹
2022-03-14 10:56:28【MATLAB】图像批处理:批量读取图像—>批量处理—>批量写入文件夹