如何在 Matlab 中循环保存文件?

Posted

技术标签:

【中文标题】如何在 Matlab 中循环保存文件?【英文标题】:how to save files in a loop in Matlab? 【发布时间】:2013-06-11 13:47:50 【问题描述】:

我有一些 geotif 文件,我正在尝试用它们创建马赛克。我曾尝试将图像先放在一行中,然后尝试加入 in 列并进行最终马赛克。我希望输出文件带有循环的保存号(outimage1,outimage2,..)。我想知道我应该如何引入带有循环号序列的输出文件。

如果有人帮我找出以下代码中的错误,我会很高兴。

 close all;
 clear all;
 clc;

 path = 'E:\MATLAB\...\tifs\';
 path2 = 'E:\MATLAB\...\tifs\out\';

 matfiles = dir(fullfile('E:', 'MATLAB',...,'tifs','*.tif'));

 files = matfiles.name;
 lf=length(files);

 image_row = [];


 for L=1:11
     for k=1:14:lf
          fname = matfiles(k).name;
          fullname = horzcat (path,fname);
          infile = imread (fullname);
          image_row= [image_row,infile];
          [~, ~, ext] = fileparts(fname);
          outimage = fullfile( path2, sprintf('outimage%d%s', L, ext) );
          imwrite(image_row,outimage);
     end

 end

我们非常感谢您的助手。

【问题讨论】:

相关问题可能是this和this。 下一次,如果你能提供一个更简洁的代码示例来展示你遇到的错误 + 更好的错误消息的本地化/描述以及调用它的确切位置,那就更好了。 【参考方案1】:

我不熟悉 matlab 语法 k. format(fname)。 如果您想在 Matlab 中进行字符串格式化 - 请阅读 this first。

您的问题的解决方案可能是

 outimage = fullfile( path2, sprintf('outimage_%03d_%s', k, fname ) );

编辑: 关注comment by OP,获取文件格式(tif):

 [~, ~, ext] = fileparts(fname);
 outimage = fullfile( path2, sprintf('outimage%d.%s',ext) );

【讨论】:

非常感谢您的快速回复。抱歉,我的互联网有问题,造成了这个延迟。我想用 说什么。 format(fname) 是获取输入文件的格式,即.tif。 @施:谢谢版主。好吧,我现在遇到了一个关于新文件名的问题。我期望输出为 (outimage1,outimage2,...,outimage10,outimage11) 但我收到的是 (outimage1,outimage15,...,outimage127,outimage141)。你认为通过引入另一个循环我可以解决这个问题吗?或者可能为输出文件引入另一个索引? @user2355306 我认为最简单的方法是引入另一个索引。 感谢您的建议。我做了这个新的改变,但不幸的是它不起作用。输出图像是空的:(你认为会是什么问题?。你可以在上面的代码中找到新编辑的。

以上是关于如何在 Matlab 中循环保存文件?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用matlab将每个文件保存在for循环中

如何使用循环插入噪声并将多个图像保存在不同的文件夹中?(matlab)

MATLAB中循环保存不同图片到不同文件夹

将 Matlab 中循环的输出保存在不同的文件夹中

如何在 MATLAB 中创建和保存大型数据集?

命名工作区变量并将其保存到名称中更改数字的文件中 - Matlab