Excel 在MATLAB中使用xlswrite
我正在使用MATLAB中的三个数据集,例如Excel 在MATLAB中使用xlswrite,excel,matlab,Excel,Matlab,我正在使用MATLAB中的三个数据集,例如 日期: 有D日期是每个字符,但保存在单元格数组中 {'01-May-2019','02-May-2019','03-May-2019'....} {'A','B','C',...} 标签: 有100个标签,每个标签都是字符串,但保存在单元格数组中 {'01-May-2019','02-May-2019','03-May-2019'....} {'A','B','C',...} 值: [0, 1, 2,...] 这是一行大小为D×100的值
有
D
日期是每个字符,但保存在单元格数组中
{'01-May-2019','02-May-2019','03-May-2019'....}
{'A','B','C',...}
有100个标签,每个标签都是字符串,但保存在单元格数组中
{'01-May-2019','02-May-2019','03-May-2019'....}
{'A','B','C',...}
[0, 1, 2,...]
这是一行大小为D×100
的值
矩阵date labels Values
01-May-2019 A 0
01-May-2019 B 1
01-May-2019 C 2
直到同一日期重复100次。然后,下一个日期与第二列中的100个标签以及第二行的值矩阵在第三列中转置的新值一起添加到下一行(+重复100次)。重复此操作,直到达到日期长度D
第一次约会,我用了:
c_1 = {datestr(datenum(dates(1))*ones(100,1))}
c_2 = labels
c_3 = num2cell(Values(1,:)')
xlswrite('test.xls',[c_1, c_2, c_3])
但是,不幸的是,这似乎将所有内容都放在了一列中,即日期,然后是标签,然后是值数组的第一行。我需要把它们分成三列
此外,我认为,在我考虑的每一天中,上述内容都需要在for
循环中。我尝试使用表
函数,但是运气不太好
如何有效地解决此问题?您可以使用和构建列,并(可选)将它们添加到表中进行导出
例如:
dates = {'01-May-2019','02-May-2019'};
labels = {'A','B', 'C'};
values = [0, 1, 2];
n_dates = numel(dates);
n_labels = numel(labels);
dates_repeated = reshape(repmat(dates, n_labels, 1), [], 1);
labels_repeated = reshape(repmat(labels, n_dates, 1).', [], 1);
values_repeated = reshape(repmat(values, n_dates, 1).', [], 1);
full_table = table(dates_repeated, labels_repeated, values_repeated);
给我们下表:
>> full_table
full_table =
6×3 table
dates_repeated labels_repeated values_repeated
______________ _______________ _______________
'01-May-2019' 'A' 0
'01-May-2019' 'B' 1
'01-May-2019' 'C' 2
'02-May-2019' 'A' 0
'02-May-2019' 'B' 1
'02-May-2019' 'C' 2
应根据需要将其导出到电子表格
我们使用repmat
和重塑
所做的是“叠加”值,然后将它们转换为单个列:
>> repmat(dates, n_labels, 1)
ans =
3×2 cell array
{'01-May-2019'} {'02-May-2019'}
{'01-May-2019'} {'02-May-2019'}
{'01-May-2019'} {'02-May-2019'}
我们转置标签和值,使它们交织在一起(例如[0,1,0,1]
vs[0,0,1,1]
),因为repmat
是主要列
如果不需要中间表,可以使用从值创建单元格数组,以便将所有3个单元格数组连接在一起(或者,在R2019a中添加,这也不推荐xlswrite
):
谢谢你的帮助!由于值是一个(D x 100)数组,是否可以修改您的值\u repeated
行,以便我可以为正在考虑的每个日期D
提取值(D,:)'
?Typerhaps我可以只写values\u repeated=重塑(values',[],1)代码>?基本上,这将转置所有的值行,并将它们组合成一个单独的列向量?对不起,我错过了那部分。后者是正确的,是的。非常感谢您的优雅的解决方案!