我在我的脚本(Matlab)中创建一个数组,收集我从数据文件中计算出的所有结果。现在,如果我能够在这个数组中包含文件名,这将是很好的,以便在以后的使用中轻松识别。
我现在得到的是(非常简化 - 无法运行):
%Importing file:
FileName=uigetfile('*.CSV', 'Select .CSV-file','MultiSelect', 'off');
%Doing come calc on the data from the file imported...
%Results:
A=12;
B=4;
C=17;
D=124;
%Combining in array:
results=[A; B; C; D]
这很好用。 现在,我想在这个数组中包含FileName:
results=[FileName; A; B; C; D]
这给了我错误:
Error using vertcat
Dimensions of matrices being concatenated are not consistent.
关于如何解决这个问题的任何想法?我对此非常新手。我知道这与文件名是一个字符串有关(我已经尝试了cellstr(FileName)
,但它没有帮助。另外,我只试过'FileName'
) 。
答案 0 :(得分:0)
您不能将任意字符串添加到特定大小的矩阵中,这是在"容器中混合两种类型的数据"这对他们两个都不合适。要解决该问题,您应该将其保存为struct
数组或单元格数组,以及Matlab如何处理这些情况,例如:
results.name='Filename';
results.data=[A; B; C; D];
所以你有一个变量results
,可以使用它的字段名results.name
等来访问其中不同类型的数据....
编辑:
为了将此信息移动到excel文件,最好使用单元格数组:
your_xls_filename = 'bla.xlsx'; %$ just for the example
results = {'FileName'; A ; B ; C; D}; % this is a cell array
sheet = 1; % just for the example
xlRange = 'E1'; % just for the example
xlswrite(your_xls_filename,results,sheet,xlRange);
现在打开bla.xlsx
,看看你得到了什么。