-
如何利用matlab循环读取文件夹中的文件
2019-12-18 23:45:27在桌面创建一个名为《如何利用matlab循环读取文件夹中的文件》的文件夹,在再这个文件夹里面创建几个子文件夹,如下图所示; 第二步:在每个文件夹里面放好数据文件,我这里以.txt文件为列子。 具体的如下图所示...第一步:创建数据文件夹
在桌面创建一个名为《如何利用matlab循环读取文件夹中的文件》的文件夹,在再这个文件夹里面创建几个子文件夹,如下图所示;
第二步:在每个文件夹里面放好数据文件,我这里以.txt文件为列子。
具体的如下图所示:
对于上面的文件,为了能当输入文件的顺序时能读取文件中的数据,故编写了如下的代码:
clc clear close all; %% 读取各个文件夹 %———注意修改文件的路径,将《C:\Users\pgl\Desktop\如何利用matlab循环读取文件夹中的文件》修改为自己的文件夹————% filename1=ls('C:\Users\pgl\Desktop\如何利用matlab循环读取文件夹中的文件');%提取文件名,每次必须将文件名写入。 cd('C:\Users\pgl\Desktop\如何利用matlab循环读取文件夹中的文件')%跳转到要处理的数据所在文件夹 filename=cellstr(filename1); %把细胞数组转化为字符串 filename(1:2)=[]; %删除filename中的...文件名,不知道哪里来的 num=length(filename); %计算文件个数 %% 读取其中一个文件夹中的文件 fileth=1; %计算第几个文件夹的数据,fileth最大能选择num %如果选择的文件数大于num,初始化为第一个 if fileth>num fileth=1; end file_location=['C:\Users\pgl\Desktop\如何利用matlab循环读取文件夹中的文件','\',filename(fileth)]; C=cell2mat(file_location); %细胞数组转化为字符串 cd(C); %跳转到第fileth个文件夹 all_fileth_filename_char=ls(C); all_fileth_filename=cellstr(all_fileth_filename_char); %把细胞数组转化为字符串 all_fileth_filename(1:2)=[]; num_file=length(all_fileth_filename);%计算文件夹中文件的个数 detail_file_name=1; %打算读取的文件序号 %防止因为输入而产生的错误 if detail_file_name>num_file detail_file_name=1; end file_char=all_fileth_filename{detail_file_name};%提取文件的字符 data=load(file_char); %读取文件数据
方法二:如何快速读取文件夹里面的同一类型的文件
clc clear close all location='如何利用matlab循环读取文件夹中的文件/'; temp1 = dir([location, '*.txt']); cd('如何利用matlab循环读取文件夹中的文件') N=length(temp1); for i=1:N data=load(temp1(i).name); end % 注意:将需要读取的文件夹放在和程序的同一文件夹内,
-
Matlab循环读取txt文件并对其中数据进行计算最后导出为excel
2019-10-21 21:45:491、matlab批量导入txt文件 2、将txt文件中的英文去除 3、逐行将矩阵输出为excel废话不多说,先上代码。
clear; clc; for i = 1:30 %文件个数 filename = ['test (' num2str(i) ')' '.txt']; %文件名称 delimiterIn = ' '; headerlinesIn = 12; %文件中文字的行数 AllData = importdata(filename,delimiterIn,headerlinesIn); %获取文件 DiseaseData = AllData.data(1:2025,4:129); %纯数字矩阵 MeanDiseaseData = mean(DiseaseData); %进行平均值计算 s=strcat('A',num2str(i)) %输出A1 A2 A3等,用于下面循环导出为excel xlswrite('testdata.xlsx',MeanDiseaseData,1,s); %逐行写入excel end
输入格式:顺序增加的文件名称,以便用来循环。
这里就涉及到怎样批量重命名文件了
对于上述文件,首先全选。
全选后按 F2 ,输入文件名如 test
在按下 CTRL + Enter ,效果如下图。
ok,至此输入文件名称格式已经好了。此时,如果我们输入的txt文件中既有英文,又有数字,如下图所示。
我们直接使用 textread 函数的话,是会报错的。
所以我们代码里使用:headerlinesIn = 12; %文件中文字的行数 AllData = importdata(filename,delimiterIn,headerlinesIn); %获取文件
这样就可以将txt文件中的非数字部分去除。
至此,我们已经将txt文件中的数字转化为Matlab里的矩阵了,接下来进行一系列运算后,将其输出为excel。
如果直接调用
xlswrite(filename,A)
的话,每次循环产生的新数组A,都会将之前的写入excel的数组覆盖,不管循环多少次,最终指挥获得一个数组。那么,我们想每一次循环导出到excel的数组都放到上一次数组的下面。
这时我们需要先了解一下下面这个函数:
xlswrite(filename,A,sheet,xlRange)
%writes to the specified worksheet and range.比如 xlswrite(test,A,1,A1)
意思就是将A这个矩阵放到名为test的excel文件中,具体放的位置为sheet1,矩阵左上角为A1。
那现在如果每次导入excel的矩阵为一行的话,只需要第一次循环为 xlswrite(test,A,1,A1),第二次为 xlswrite(test,A,1,A2) 就好。
s=strcat('A',num2str(i)) %输出A1 A2 A3等,用于下面循环导出为excel xlswrite('testdata.xlsx',MeanDiseaseData,1,s); %逐行写入excel
程序里的这两行就实现了上述功能。
总结
到此我们就实现了
1、matlab批量导入txt文件
2、将txt文件中的英文去除
3、逐行将矩阵输出为excel猜你喜欢:👇🏻
⭐【Matlab】怎么修改Excel单元格颜色?
⭐Matlab 实现对 Excel sheet 重命名 合并单元格
⭐【Matlab】一个超简单的生成顺序数组的方法 -
matlab循环读取文件(xls、txt、dat、mat)】
2017-05-08 11:21:02% n 为数据文件个数 % 数据文件格式为: mat dat txt xls % data 为输入数据的结构体 % 取出任何一个来用的语句为 data{i} i表示第i次读入文件!(如果进行了顺序组合,最后只剩下data{1}!) % 例如...程序如下:
% n 为数据文件个数
% 数据文件格式为: mat dat txt xls
% data 为输入数据的结构体
% 取出任何一个来用的语句为 data{i} i表示第i次读入文件!(如果进行了顺序组合,最后只剩下data{1}!)
% 例如你要输出第3次的读入文件,并赋值给A 语句如下:(如果进行了顺序组合,最后只剩下data{1}!)
% A=data{3};(如果进行了顺序组合,最后只剩下data{1}!)
clear
n=input ('输入文件个数:n=');
for i=1:n
[filename,pathname]=uigetfile({'*.xls';'*.txt';'*.dat';'*.mat' },'导入数据');
l= length(filename);
if l<5
errordlg ('wrong file','file open error !!!');
return;
end
filename1=strcat(pathname,filename);%合并绝对路径
test=filename(1,l-3:l);
switch test
case '.mat'
d=struct2cell(load(filename1));%绝对路径;取出文件夹中数据;
a=d;
case '.dat'
d=(load(filename1));%绝对路径;取出文件夹中数据;
a=d;
case '.txt'
d=(load(filename1));%绝对路径;取出文件夹中数据;
a=d;
case '.xls'
file=fullfile(pathname,filename);
d=xlsread(file);
a=d;
otherwise
errordlg ('wrong file','file open error !!!');
return;
end
cd(pathname); %保存绝对路径
data{i}=a;
end
disp('0 不做任何操作')
disp('1 按照导入顺序组合(要求:文件列数相同)')
sss=input('输入:0 or 1\n');
switch sss
case 0
data1=data;
case 1
D=[];
for i=1:n
clear A
A=data{i}(:,:);
D=[D;A];
end
data1{1}=D;
otherwise
errordlg ('wrong Number/n REPEAT','The No. is error !');
break
end
clear data filename filename1 a d sss i l n test A D file j
data=data1;
clear data1
直接转成m文件运行就能读取,程序最后路径为数据所在的路径。
从第一个%复制
使用方法:
在保存为wt.m文件,完成后生成wt.m文件,在matlab里输入help wt有解释。。。
-
matlab中循环保存mat_两分钟搞定Python读取matlab的.mat数据
2021-01-08 00:36:57Matlab是学术界非常受欢迎的科学计算平台,matlab提供强大的数据计算以及仿真功能。在Matlab中数据集通常保存为.mat格式。那么如果我们想要在Python中加载.mat数据应该怎么办呢?所以今天就给大家分享一个使用python...Matlab是学术界非常受欢迎的科学计算平台,matlab提供强大的数据计算以及仿真功能。在Matlab中数据集通常保存为.mat格式。那么如果我们想要在Python中加载.mat数据应该怎么办呢?所以今天就给大家分享一个使用python加载.mat数据的方法。我将使用Stanford Cars Dataset数据集作为例子为大家演示使用方法。数据集Stanford Cars Dataset数据集是一个关于车辆图像分类的数据集,该数据集保存格式为.mat形式。数据及下载地址为:
https://ai.stanford.edu/~jkrause/cars/car_dataset.html
加载.mat文件
Scipy是一个非常流行的用于科学计算的python库,很自然地,它们有一种方法可以让你读入.mat文件。阅读它们绝对是一件容易的事。您可以在一行代码中完成它:
from scipy.io import loadmat
annots = loadmat('cars_train_annos.mat')格式化数据
通过loadmat方法加载数据后会返回一个Python字典的数据结构,我们可以查看数据关键字,代码如下:
annots.keys()
> dict_keys(['__header__', '__version__', '__globals__', 'annotations'])下边是关于数据集描述的文档,从中我们可以查看关于数据及更详细的描述,也可以验证通过Python加载后数据是否正确。
This file gives documentation for the cars 196 dataset.
(http://ai.stanford.edu/~jkrause/cars/car_dataset.html)
— — — — — — — — — — — — — — — — — — — —
Metadata/Annotations
— — — — — — — — — — — — — — — — — — — —
Descriptions of the files are as follows:
-cars_meta.mat:
Contains a cell array of class names, one for each class.
-cars_train_annos.mat:
Contains the variable ‘annotations’, which is a struct array of length
num_images and where each element has the fields:
bbox_x1: Min x-value of the bounding box, in pixels
bbox_x2: Max x-value of the bounding box, in pixels
bbox_y1: Min y-value of the bounding box, in pixels
bbox_y2: Max y-value of the bounding box, in pixels
class: Integral id of the class the image belongs to.fname: Filename of the image within the folder of images.
-cars_test_annos.mat:
Same format as ‘cars_train_annos.mat’, except the class is not provided.
— — — — — — — — — — — — — — — — — — — — Submission file format
— — — — — — — — — — — — — — — — — — — — Files for submission should be .txt files with the class prediction forimage M on line M. Note that image M corresponds to the Mth annotation inthe provided annotation file. An example of a file in this format istrain_perfect_preds.txtIncluded in the devkit are a script for evaluating training accuracy,eval_train.m. Usage is:
(in MATLAB)
>> [accuracy, confusion_matrix] = eval_train(‘train_perfect_preds.txt’)
If your training predictions work with this function then your testing
predictions should be good to go for the evaluation server, assuming
that they’re in the same format as your training predictions.从文档中可以看到,annotations变量中包含我们想要的结构数据,包括标签、图像文件名以及图像边界框信息,因此我们只需处理annotations变量并从中提取我们想要的信息。
type(annots[‘annotations’]),annots[‘annotations’].shape
>(numpy.ndarray, (1, 8144))
type(annots['annotations'][0][0]),annots['annotations'][0][0].shape
>(numpy.void, ())从.mat中提取的数据以numpy.ndarray格式存储,此数组中的项的数据类型是numpy.void。
annots[‘annotations’][0][0][‘bbox_x1’], annots[‘annotations’][0][0][‘fname’]
> (array([[39]], dtype=uint8), array(['00001.jpg'], dtype='))接下来我们通过循环将字典中的annotations变量信息提取出来,并将它们存储在列表中:
[item.flat[0] for item in annots[‘annotations’][0][0]]
> [39, 116, 569, 375, 14, '00001.jpg']将数据转换成Pandas Dataframe
现在我们用python加载好matlab数据文件,为方便后续的处理,我们将数据转换为pandas格式。转换过程十分简单,具体代码如下:
data = [[row.flat[0] for row in line] for line in annots[‘annotations’][0]]
columns = [‘bbox_x1’, ‘bbox_y1’, ‘bbox_x2’, ‘bbox_y2’, ‘class’, ‘fname’]df_train = pd.DataFrame(data, columns=columns)转换后数据形式如下:
参考
https://towardsdatascience.com/how-to-load-matlab-mat-files-in-python-1f200e1287b5
热 门 推 荐用Python创建微信机器人用Python机器人监听微信群聊用Python获取摄像头并实时控制人脸开源项目 | 用Python美化LeetCode仓库推荐Python中文社区旗下的几个服务类公众号征稿启事 | Python中文社区有奖征文▼ 点击成为社区注册会员 「在看」一下,一起PY!
-
matlab读取文件夹中数据
2019-04-14 09:30:54matlab读取指定文件夹下,特定格式文件第一步读取文件代码输出说明第二步 建立for循环说明(strcat) 第一步读取文件 代码 Path = 'D:\DATA\'; % 设置路径,记得加上最后的反斜杠 File = dir(fullfile(Path... -
Matlab读取struct数据转换为数组
2021-03-01 11:23:16假设sol保存了366个字段 可使用循环创建字符串的方式套取字段中的内容: u_free = []; for i = 1:366 a = ['ufree',num2str(i)]; data = getfield (sol, a); u_free(i,1) = data; end -
运用MATLAB批量读取excel表格
2020-05-25 23:53:44**运用MATLAB批量读取excel表格****需要待读取的excel表格****Step1:读取数据的路径,通过dir函数获取特定地址文件夹中的文件列表。****Step2:循环读取每一个文件的数据,并将其存到一个根据循环命名的与原始数据... -
MATLAB中批量读取处理数据文件
2016-10-13 14:47:47对于很多新手来说,怎么读取数据就是一个比较棘手的问题,尤其是那些完全没有命名规律的文件,人工一个个的读吧费事费力又枯燥,写个循环自动读吧文件命名又没有规律。本文就是专门解决这个问题的。 解决方法:写... -
MATLAB怎么批量(循环)读取Excel文件、以及将数据保存为.xlsx
2020-09-15 15:48:56有时候我们需要对某个文件夹或者多个文件夹中的Excel文件进行读取,然后处理。那么怎么实现呢? 以一个文件夹下的Excel文件进行读取为例。 文件地址:E:\Study of Lab\Coding\Experience DatePhoto\Excel 对文件... -
Matlab读取记事本中的字符串数据
2021-03-20 16:01:37以我的为例,想要在matlab中循环读取这些图片,进行处理,则可以 1.读取name.txt中所有字符串,共有400行,存成cell [name]=textread('name.txt','%s',400); 2.循环取出 。name:400*1 cell for i=1:400 str_name=... -
matlab里读取多个文件
2019-07-27 06:45:25在一个matlab的学习群里,有人提出了这么一个问题:在matlab里如何读取多信文件的数据,例如,有许多数据,存放在不同的txt文件里。 我的办法是把这些文件的文件名按一定的规律命名,假如有一百个数据文件,则可以... -
MATLAB 的数据读取的几个方法
2018-11-18 21:24:58首先是使用cd 更改当前目录路径,然后用dir读取当前目录下所有与之匹配的(*.mpg)的格式文件,这时回返一个所读取的所有文件的信息的结构数组。video_files(the n_th).name 表示当前第第n个文件的文件名,然后for ... -
matlab批量读取文件的两种方法
2016-09-25 12:03:50matlab批量读取文件的两种方法 (2012-05-06 19:57:27) ...循环读取文件;针对文件名字有序 for i=1:4 str= strcat ('F:\数据\tek', int2str(i) , '.xls') ; % 连接字符串形成图像的文件名 a{i}=x -
matlab里如何读取多信文件的数据
2018-06-04 22:22:39在一个matlab的学习群里,有人提出了这么一个问题:在matlab里如何读取多信文件的数据,例如,有许多数据,存放在不同的txt文件里。 我的办法是把这些文件的文件名按一定的规律命名,假如有一百个数据文件,则可以... -
matlab遍历矩阵(读取矩阵每一个数据)
2019-04-14 10:38:22matlab遍历矩阵(读取矩阵每一个数据)描述代码输出 描述 matlab遍历矩阵(读取矩阵每一个数据) 思想在于建立for循环嵌套 代码 A = randn(3,4) % 创建3行4列随机矩阵 [r,c] = size(A) % 读取行r、列c for i ... -
MATLAB中读取多幅图像
2013-11-01 22:35:37循环读取图片第一种方法①List =dir('*.jpg'); %如需其它图片格式支持,可以自己【重载dir()】函数,实现查找所有图片文件的功能, %如果图片是其它路径,可以用 ["路径" ".扩展名"] 字符串来实现。 k =length... -
在MATLAB中读取多个文件
2014-09-27 09:13:16在一个matlab的学习群里,有人提出了这么一个问题:在matlab里如何读取多信文件的数据,例如,有许多数据,存放在不同的txt文件里。 我的办法是把这些文件的文件名按一定的规律命名,假如有一百个数据文件,则可以... -
matlab文件夹内文件数目_如何使用matlab读取多层文件夹中的所有数据文件
2021-02-01 11:08:25这里通过循环来写读取文件函数。function ReadFile(MainPath,FileType,FileLayer)%%%%%%%%%%%%%%%MainPath为主路径,FileType为需要读取的文件类型,FileLayer为文件类型在哪一层文件下cd(MainPath);if(FileLay>=... -
Matlab连续读取多个文件
2013-08-02 22:02:35A = dir(fullfile('d:/datafile','*...这个语句是把存放数据文件的目录d:/datafile下的所有txt文件列出来,并把这些文件名的信息存放到一个变量A中,A是一个结构体变量,只要对A进行循环就可以读取到所有文件的数据了。 -
在matlab里读取多个文件
2010-07-21 11:10:00在一个matlab的学习群里,有人提出了这么一个问题:在matlab里如何读取多信文件的数据,例如,有许多数据,存放在不同的txt文件里。 我的办法是把这些文件的文件名按一定的规律命名,假如有一百个数据... -
matlab 连续读取多个文件
2013-03-06 16:49:16把文件的文件名按一定的规律命名,假如:filename1.txt,filename2.txt,...,fielname100.txt,在读取的时候则可以使用循环: for i = 1:100 fileName = ['filename' num2str(i) '.txt']; x = load... -
GrADS数据转CSV小程序——Matlab、SPSS、Excel读取GrADS站点数据的终极解决方案
2019-04-06 15:02:52这是我写的一个Fortran+C语言小程序,可以批量地把GrADS的数据文件(.dat)转换为Matlab、Excel等别的软件方便读取的CSV文件。...用Excel里面的VBA或者是Matlab写一个循环就可以读取到所有你想要的数据了。 -
matlab中读取Mat文件,以图片形式保存
2016-12-03 18:19:09a=load('Pose29_64x64.mat');...for i = 1:1 :3332 %数据循环 b = a.fea(i,:); %一行一行的读取 d = b/255; D = reshape(d,64,64); %图片大小为64*64 %imshow(D) sc=strcat('C:\Users\801\Desktop\555\',sp -
Matlab依次读取多个.txt 文件与图片
2016-10-21 21:11:081. 面对多个 .txt 文件的依次读入,且文件名按一定的规律命名,如:filename1.txt,filename2.txt,... 。个人总结如下。 (1)首先是纯数字数据类型的文本(不掺杂字符类型)依次读入,...我们可以使用循环依次读入文 -
Matlab读取文件里所有图片
2019-12-30 11:37:50主要使用了imread函数,for循环指令,即函数imread用于读取图片文件中的数据,for用于读取所有图片。可以在matlab的命令窗口中输入doc imread或者help imread即可获得该函数的帮助信息。 clear;clc [f,p]=... -
matlab如何实现循环提取EXCEL一列数据
2015-07-13 11:57:06for i=1:256 eval(['Xnoise' num2str(i) '=A(:,' num2str(i) ')']); end save 通过以上代码先把EXCEL中的256列数据赋值给矩阵A 如果需要调用其中一列,用以下语言即可...由于MATLAB读取EXCEL文件时间较 -
matlab 写excel 慢_循环处理与保存excel数据,数据量不大但是耗时过长
2020-12-20 21:18:16close allclearclc[data,text,raw]=xlsread('中游WATERNET-...%读取excel数据文件[row1 col1]=find(cellfun(@(x) strcmp(x,'Soil_Moisture_4cm'),raw(:,2)));%查询含特定字符串的数据[row2 col2]=find(cellfun(@(x) ... -
matlab 串口实时接收数据 绘图
2018-05-25 21:02:33利用matlab进行串口接收数据,并实时绘制曲线clear ...set(s,'BaudRate',115200,'StopBits',1,'Parity','none');...for i = 1:300 %循环读取 out=fread(s,26,'uint8');%读取 数据个数 与 类型 plot... -
matlab读取两层文件下的csv文件
2021-01-06 20:48:13clc clear; Path = ‘F:\李聪\09 港珠澳数据\最新数据\DMP’; F=dir(Path); %显示文件下所有文件 F1=F(3:end,:);...for i=1:Length_F2 %第一个循环是获取文件夹下的文件夹 F3=strcat(Path,F2(i),’’); -
matlab scatter函数绘制实心点_Matlab如何筛选Excel数据并绘图
2020-11-22 15:59:09最近有知乎网友问我如何利用Matlab筛选Excel数据并绘制图线,在了解其需求后,我给一点参考意见,当时并没有完整的解决方案,今天上午尝试了几轮后,找到了一个方案。需求:如上图的表格示例,需要根据第1列name中...