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

Posted

技术标签:

【中文标题】如何使用matlab将每个文件保存在for循环中【英文标题】:How to save each file in a for loop using matlab 【发布时间】:2017-10-11 10:16:46 【问题描述】:

我在一个文件夹中有名为 modis1.hdf、modis2.hdf 和 modis3.hdf 的三个文件。我可以使用我的命令单独读取文件。

for i=1:3 or for i=1

lst_try=['D:\lst2016\lst_try\modis',num2str(i),'.hdf'];

lst_3(:,:,:,:,i)=hdfread(lst_try, 'MODIS_Grid_Daily_1km_LST', 'Fields', 'LST_Day_1km', 'Box',[76.83        77.34], [28.88        28.41]);

end

我想以 hdf 格式或 ascii 格式分别保存每个文件。因此,我正在使用命令

save(lst_try,'lst_3','-hdf')

但不能单独保存文件。

【问题讨论】:

【参考方案1】:

只需为每个存档文件命名即可。

如果我理解正确,您将在矩阵维度中分隔不同的数据。只需将这些数据分开并单独保存即可。

%do whatever you need to do

partname='myfile'

for ii=1:3,

  var_temp=lst_3(:,:,:,:,ii); %split the interesting part of you data. 

  name=[partname num2str(ii)]; %make a individual name
  save(name,'var_temp','-ascii') %saving by separated names

end

请注意,我使用了'-ascii' 选项,因为save function 不采用 hdf 格式。这有一个缺点,您只能保存大小为(N,M) 的矩阵。

ascii 选项无法获取 3D 数据。

【讨论】:

问题在于他将所有数据保存在一个变量中并尝试“单独”一次保存 @Irreducible 确实。我想象分析是在同一个循环中完成的。我确实会更正。 @Guto 感谢您的帮助,但 matlab 显示此错误:myfile Error using save Unknown command option。 *** 中的错误(第 15 行) save(name,'var_temp','-hdf') % 通过分隔名称保存 @VaishaliJain -hdf 确实不是save 上识别的格式。你可以使用imwrite。还有this。最后一个似乎更像你的情况。 @VaishaliJain 我可以看一下,但是如果问题变成保存在 hdf4 中的问题,除了阅读 Matlab 手册的经验之外,我无能为力:P。 HDF5 有一个hdf5write 函数。如果我们陷入了保存 hdf 格式,最好专门提出一个新问题。

以上是关于如何使用matlab将每个文件保存在for循环中的主要内容,如果未能解决你的问题,请参考以下文章

MFC中如何用for循环将一组值在编辑框中显示?

在matlab中如何用mat数据作图

如何在matlab中保存通过for循环生成的数据?

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

如何逐步在批处理文件中运行for循环

遍历 for 循环并将检索到的数据保存在每个循环的唯一 csv 文件中 | Python