高数组不允许包含数据类型的结构体

9的观点(30天)
我有困难高阵列在接下来的工作流程,
  • 在一个循环过程数据。在每个迭代中,生成包含结果并保存结构的结构*。垫文件
  • 阅读所有*。垫文件s into a datastore
  • 把数据存储到一个高的数组。G艾夫斯的错误“高大数组不允许包含数据类型的结构体”
  • 把高数组变成一个时间表
这里有一个例子,我由修改Edric埃利斯的回答 在这里 。你能帮我消除错误呢?
% %设置
nRowLimit = 100;%在每个文件的记录数量
nCalculation = 20;%计算迭代次数也垫文件
tStart = datetime(1 2013年,11日,8,0,0);%在生成datetime数组以备后用
% %准备保存matlab文件
iFileToSave = 0;
dirSave =“c: \ temp”;
% %
iCalc = 1: nCalculation%的循环迭代计算
清晰的StrucResults;%结构进行计算的结果
%生成结构包含假装计算结果
iRow = 1: nRowLimit
%生成示例datetime填补一个datetime数组
StrucResults.date (iRow) = tStart + 1000 * iFileToSave + iRow;
%生成字符填充单元阵列的例子
StrucResults。标签{iRow} = char(圆(兰德(1)* 100));
%生成示例值来填补一个数值矩阵
StrucResults。白色(iRow:) =兰德(1、5);
结束
% %保存包含结果小垫的结构文件
iFileToSave = iFileToSave + 1;
%不同的文件名
fileSave = fullfile (dirSave sprintf (“FileContainingStruct_ % 05 d.mat”iFileToSave));
保存(fileSave,“StrucResults”);
结束
% %回到作为一个高读取数据数组
%首先创建一个数据存储从垫子上的所有文件
fds = fileDatastore (fullfile (dirSave‘* .mat‘),%文件加载
“ReadFcn”@ (x) struct2table(负载(x)),%尝试转换结构表,以避免错误代码行
“UniformRead”,真正的);
%读入一个高大数组
tallData =高(fds);%抛出错误”高数组不允许包含数据类型的结构体”
变化百分比高的时间表
tallTimeTable = table2timetable (tallData);
很好消除结构有利于将结果存储在单个变量,但我找不到工作。

接受的答案

Edric埃利斯
Edric埃利斯 2021年4月23日
你的代码是 所以近 工作。我做了两个小变化,标注 % # # # :
% %设置
nRowLimit = 100;%在每个文件的记录数量
nCalculation = 20;%计算迭代次数也垫文件
tStart = datetime(1 2013年,11日,8,0,0);%在生成datetime数组以备后用
% %准备保存matlab文件
iFileToSave = 0;
dirSave = fullfile (tempdir (),“809910”);
如果~存在(dirSave“dir”)
mkdir (dirSave);
结束
% %
iCalc = 1: nCalculation%的循环迭代计算
清晰的StrucResults;%结构进行计算的结果
%生成结构包含假装计算结果
% # # #确保列向量场
iRow = 1: nRowLimit
%生成示例datetime填补一个datetime数组
StrucResults。日期(iRow, 1) = tStart + 1000 * iFileToSave + iRow;
%生成字符填充单元阵列的例子
StrucResults。标签{iRow 1} = char(圆(兰德(1)* 100));
%生成示例值来填补一个数值矩阵
StrucResults。白色(iRow:) =兰德(1、5);
结束
% %保存包含结果小垫的结构文件
iFileToSave = iFileToSave + 1;
%不同的文件名
fileSave = fullfile (dirSave sprintf (“FileContainingStruct_ % 05 d.mat”iFileToSave));
% # # #的字段使用“保存结构”来确保StrucResults直接保存到文件。
保存(fileSave,“结构”,“StrucResults”);
结束
% %回到作为一个高读取数据数组
%首先创建一个数据存储从垫子上的所有文件
fds = fileDatastore (fullfile (dirSave‘* .mat‘),%文件加载
“ReadFcn”@ (x) struct2table(负载(x)),%尝试转换结构表,以避免错误代码行
“UniformRead”,真正的);
%读入一个高大数组
tallData =高(fds);%抛出错误”高数组不允许包含数据类型的结构体”
变化百分比高的时间表
tallTimeTable = table2timetable (tallData);
%的检查结果
头(tallTimeTable)
ans = 8×2高时间表日期标签白色____________________ _____ ________________________________________________________ 02 - 11月- 2013 08:00:00{”}0.24734 0.82558 0.41452 0.3178 0.41834 03 - 11月- 2013 08:00:00 {B} 0.49954 0.61133 0.76577 0.67823 0.50137 04 - 11月- 2013 08:00:00{”}0.099728 0.28918 0.42864 0.62252 0.61956 05 - 11月- 2013 08:00:00 {' H '} 0.67335 0.32173 0.25268 0.057868 0.17846 06 - 11月- 2013 08:00:00{”}0.82981 0.059187 0.34086 0.31046 0.25538 07 - 11月- 2013 08:00:00{‘@’}08年0.53214 0.78883 0.30166 0.77258 0.68763 - 11月- 2013 08:00:00 {Y} 0.37458 0.19037 0.75301 0.62862 0.85332 09 - 11月- 2013 08:00:00 {' 8 '}0.27491 0.22561 0.12215 0.46316 0.66067
第一个变化是确保结构是列向量。
第二个变化是使用更重要 保存结构 摆脱“结构”的额外层垫文件。

更多的答案(0)

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!