Matlab save()函数不保存数据

时间:2017-02-01 10:35:02

标签: matlab save load

编辑:事实证明,保存位置不足以容纳文件。对于以后的读者来说,如果save()没有返回错误,但保存了一个空文件,那么它可能是一个太小的保存目录。

我有一个脚本,我用它创建了一个matlab结构。我将其命名为imageStruct

> >> imageStruct
> 
> imageStruct = 
> 
>   1×4746 struct array with fields:
> 
>     objectNumber
>     title
>     principalOrFirstMaker
>     productionPlaces
>     date
>     orginalCollection
>     webLink

我可以使用以下方法从我的工作区保存此变量:

save('imageStruct.mat','imageStruct')

我也可以再次将它加载到我的工作区:

> clc;
> load('imageStruct.mat')
>> length(imageStruct)
ans =
    4746

到目前为止一切顺利。接下来,我将数据添加到imageStruct,将其增加到1 x 11496结构数组。

>>metData = readtable('meta_data_metropolitan_paintings.txt','FileEncoding','UTF-8','Delimiter','\t');

>>for i = 1:length(metData.Obj_num)
    disp(i)
    imageStruct(length(imageStruct)+1).objectNumber = char(metData.var1(i));
    imageStruct(length(imageStruct)).title = metData.var2(i);
    imageStruct(length(imageStruct)).productionPlaces = metData.var3;
    imageStruct(length(imageStruct)).medium = metData.var4(i); 
    imageStruct(length(imageStruct)).date = metData.var5(i);
    imageStruct(length(imageStruct)).principalOrFirstMaker = metData.var6(i);
    imageStruct(length(imageStruct)).orginalCollection = metData.var7(i);
    imageStruct(length(imageStruct)).webLink = metData.var8(i);
end 


>>imageStruct

imageStruct = 

  1×11496 struct array with fields:

objectNumber
title
principalOrFirstMaker
productionPlaces
date
orginalCollection
webLink
medium

如果我再次使用save('imageStruct.mat','imageStruct'),它将无法保存数据。将创建名为“imageStruct.mat”的文件,但该文件为空。我可以正常使用imageStruct,除了添加的数据之外,原始版本和新创建的版本之间似乎没有任何区别。

我虽然可能是由于尺寸限制,但我试图复制原始结构几次,直到它是1 x 20000,并且它保存得很好。

0 个答案:

没有答案