如何在 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 中循环保存文件?的主要内容,如果未能解决你的问题,请参考以下文章