编辑:事实证明,保存位置不足以容纳文件。对于以后的读者来说,如果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,并且它保存得很好。