假设我有一个名为data
的单元格:
data{1} = vector1;
data{2} = vector2;
...
data{n} = vectorn;
data
中的所有向量(具有数值)具有相同的1xN大小。
现在,我想将此数据文件导出到.xlsx文档中,其中每行都是一个向量,我想标记每一列。结果应该是这样的:
label1 label2 ... labelN
vector1(1,1) vector1(1,2) ... vector1(1,N)
... ... ... ...
vectorn(1,1) vectorn(1,2) ... vectorn(1,N)
我尝试使用以下方法执行此操作:
n=10;
N=5;
for i=1:n
data{i}=rand(1,N);
end
filename='test.xlsx';
xlswrite(filename,data)
但我的.xlsx文件只包含data
中的所有数据。我不知道如何做标签。
请帮帮我。
答案 0 :(得分:1)
可以使用vertcat
,num2cell
,sprintf
,strsplit
和xlswrite
完成此操作,如下所示:
modified_data = num2cell(vertcat(data{:})); % Converting 1xn cell into nxN cell
% Generating Column Headers as specified in the question
col_header = strsplit(sprintf('label%d ' , 1:N));
col_header = col_header(1:end-1);
% If N is not much high number (e.g; if N=5), you can input Column Headers as:
% col_header = {'label1','label2','label3','label4','label5'};
filename='test.xlsx'; % Name of the excel file to be written
xlswrite(filename,[col_header; modified_data]); % Writing the excel file
答案 1 :(得分:0)
因为你在一个单元格(rand(1,N)
)中一起调用data{i}
。对于其自己单元格中的每个值,您必须创建一个nxN单元格矩阵,如果您从整个matirx转换,这是最简单的方法:
n=10;
N=5;
data=rand(n,N);
celldata=num2cell(data);
filename='test.xlsx';
xlswrite(filename,celldata);
否则你必须制作两个循环,但那并不是那么好的表现