2016-11-28 63 views
0

比方說,我有一個名爲data這樣的細胞:導出數據文件

data{1} = vector1; 
data{2} = vector2; 
... 
data{n} = vectorn; 

所有向量(與數值)在data具有相同的1×N的大小。

現在,我想導出這個數據文件到一個.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所有數據。我不知道如何去做標籤。

請幫幫我。

回答

1

這可以使用vertcatnum2cellsprintfstrsplitxlswrite如下來完成:

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 
0

它是因爲您在一個單元格中呼叫rand(1,N)data{i})。對於在自己小區內的每個值必須創建細胞的NxN矩陣,如果你transfrom整個matirx這是最容易做:

n=10; 
N=5; 
    data=rand(n,N); 
    celldata=num2cell(data); 
filename='test.xlsx'; 
xlswrite(filename,celldata); 

否則你必須做出兩個循環但那不是那麼大performancewise

+0

的OP在1XN電池的形式有數據。這個答案沒有提到任何有關轉換的內容。也沒有關於列標題的信息。所以這不是一個答案 –