常见问题:如何处理一系列的文件?

527(30天)
1月
1月 2012年12月26日
编辑: 1月 2021年4月8日
我如何处理一系列的文件?
3评论
沃尔特·罗伯森
沃尔特·罗伯森 2020年2月16日
预先分配一个输出至少三维数组,一维是第一个循环执行的次数,第二个维度是第二个循环执行的次数,和第三维第三循环执行的次数。然后分配到输出根据你做了多少个循环迭代。
例如,
Lvals = [-83、149、5 0 2, 101];
巴=长度(Lvals);
输出= 0(7 3巴);
J = 9:17:11
Jidx =圆((j - 9) / 17) + 1;
K = 1000:500:2000
一轮Kidx = ((k - 500) / 500);
Lidx = 1:巴
L = Lvals (Lidx);
输出(Jidx Kidx, L) = J。^ 2 + K / 7 +罪(l . ^ 3);
结束
结束
结束

登录置评。

接受的答案

1月
1月 2012年12月26日
编辑:1月 2021年4月8日
如果您想要处理的文件按顺序编号,如“file1。txt”、“file2。txt”、“file3。txt”等等,那么你可以使用 SPRINTF NUM2STR 创建文件名和 负载 , IMREAD , 打开外部文件 等检索的数据文件。(还要注意建筑文件名的三种不同的方式——你可以用你喜欢的方式)。
%读取file1文件。通过file20 txt。txt, mat1。通过mat20.mat垫
%,并通过image20.jpg image1.jpg。文件在当前目录中。
文件夹= cd;
k = 1:20
matFilename = sprintf (“垫% d.mat”、k);
matData =负载(fullfile (cd, matFilename));
jpgFilename = sprintf (“图像% d.jpg”、k);
imageData = imread (jpgFilename);
textFilename = sprintf (“文件% d.txt”、k);
fid = fopen (fullfile(文件夹,textFilename),“rt”);
textData =从文件中读(fid);
文件关闭(fid);
结束
在上面的代码中,matData imageData,每次textData会覆盖。你应该保存到一个数组或单元阵列如果你需要使用外循环,否则立即在循环中使用它们。
如果你想要处理所有的文件名字匹配一个模式在一个目录,您可以使用DIR选择文件。注意,尽管这个示例使用 * 模式和jpg IMREAD 读取数据,与前面的例子你可以使用任何模式和文件阅读功能适合应用程序的需要:
文件夹=“C: \文档和设置\ yourUserName \ \我的文档我的照片;
如果存在(文件夹,“dir”)~ = 7在现代Matlab版本% isfolder(文件夹)
消息= sprintf (错误:以下文件夹不存在:\ n % s的、文件夹);
uiwait (warndlg(消息));
返回;
结束
filePattern = fullfile(文件夹,‘* . jpg”);
jpegFiles = dir (filePattern);
k = 1:长度(jpegFiles)
baseFileName = jpegFiles (k) . name;
fullFileName = fullfile(文件夹,baseFileName);
流(“现在阅读% s \ n”,fullFileName);
imageArray = imread (fullFileName);
imshow (imageArray);%显示图象。
drawnow;%力显示立即更新。
结束
(编辑) 与现代Matlab版本(我假设至少从R2016b):
您可以使用 “* *” 一个递归搜索,如果多个子文件夹的文件:
文件夹=“C: \ \文件夹”;
文件列表= dir (fullfile(文件夹,“* *”,‘* . jpg”));
iFile = 1:元素个数(文件列表)
thisFolder =文件列表(iFile) .folder;
thisFile =文件列表(iFile) . name;
文件= fullfile (thisFolder thisFile);
导入文件现在需要…
结束
或者你可以试一试周”的“文件交换: FileExchange: FileFun
这个答案是一个修改版:
3评论
约书亚症
约书亚症 2019年6月24日
你好沃尔特
我似乎没有遵循你的建议通过添加一些注释来缓解你能帮我抢或者更好的是用这个例子来说明它,最好的我可以附加到一个通用的代码。
函数f = gaintobj (x)
f = rastriginsfcn ([x (1) 6 (2) -13]);
f = f + rastriginsfcn ([x(3) 3 * *ππx (4) 5));
磅= [1 1 -30 -30];
乌兰巴托= (20 70 70);
% %
%设置整数变量和变量的数量。
IntCon = (1 - 2);
据nvar = 4;
% %
%设置选项来调用自定义输出函数,和最初
%小交叉。
选择= optimoptions (“遗传算法”,“OutputFcn”@gaoutputfunround,“CrossoverFraction”,0.2);
% %
%的再现性,设置随机数发生器。
rng (10)
% %
%设置目标函数和调用解算器。
有趣= @gaintobj;
[x, fval] = ga(乐趣、据nvar[]、[][],[],磅,乌兰巴托,[],IntCon,选项)

登录置评。

更多的答案(2)

肖恩·德Wolski
肖恩·德Wolski 2013年5月31日
3评论

登录置评。


肖恩·德Wolski
肖恩·德Wolski 2016年7月29日
编辑:肖恩·德Wolski 2016年7月29日
在MATLAB R2014b和更新,您可以使用一个 数据存储 load-analyze-discard的方式来读取序列文件或一箭 readall () 命令。
1评论
伊斯梅尔Qeshta
伊斯梅尔Qeshta 2017年11月11日
嗨。谢谢你的分享。如果我的文件排列顺序等,Data11, Data12, 13日数据等。同时,如果我想把两个不同的一个文件夹内的文件的名字吗?的问候。

登录置评。

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!