2015-07-03 128 views
0

我有一個單元格數組,其維數爲1x16384,由16384個數字組成。 我試過使用cell2mat(),但是我得到了一個包含所有這些數字的元素。 我如何將它轉換爲1x16384尺寸的數組。將單元格轉換爲數組

假設B = cell2mat(A);

A看起來像;

Columns 16382 through 16384 

    '15.849' '16.337' '14.872' 

其中B看起來像;

B = 

-8.921-8.433-2.5745.23911.58714.02811.5876.7041.821-1.109-2.085-1.5970.3562. 

控制檯; 類(A),類(A {1}),尺寸(A),大小導入數據的(A {1})

ans = 

cell 


ans = 

char 


ans = 

      1  16384 


ans = 

    1  6 

對於MCVE, Csv input file

DELIMITER = ' '; 
HEADERLINES = 3; 

% Import the file 
newData1 = importdata('C:\Python34\co2a0000364.csv', DELIMITER, HEADERLINES); 

% Create new variables in the base workspace from those fields. 
vars = fieldnames(newData1); 
for i = 1:length(vars) 
    assignin('base', vars{i}, newData1.(vars{i})); 
end 


new = textdata(6:16452,4); 
A = new; 

for z = 1:63 
    A(i*257)=[]; 
end 

B = A' 
A= B; 
A= cell2mat(B) 
B= A 
+3

如果您發佈了[mcve](http://stackoverflow.com/help/mcve) – kkuilla

+0

,它會有所幫助請從命令提示符的輸出中發佈以下信息,假設您的單元格數組名爲'A': class(A)'''class(A {1}),'size(A)','size(A {1})'。您的文章缺少**很多信息來診斷您的問題。 – rayryeng

+0

@kkuilla我重新修正了這個問題。我希望這有幫助! –

回答

2

您方式相當笨拙。我邀請您閱讀textscan函數文檔,該文檔允許在導入混合數據類型(文本和數字數據)時具有更大的靈活性。

我建議你導入的另一種方式,它採用textscan

%% // Import only the 4th column of data 
fid = fopen('co2a0000364.csv') ; 
M = textscan(fid , '%*s%*s%*s%f' , 'Delimiter',' ' , 'HeaderLines',4) ; 
fclose(fid) ; 
M = cell2mat(M) ; 

%% // reshape to have each channel in its own colum 
M = reshape(M , 257 , []) ; 

%% // Delete the channel number from the data table 
M(1,:) = [] ; 

這會給你一個不錯的256 * 64的矩陣,包含一列每個64個信道的數據。

如果你真的想他們都在一列順序,只需添加:

M = M(:) ; 

到代碼的末尾。


說明注:textscan格式說明我用:'%*s%*s%*s%f'告訴函數讀取每行4個元素:
- 3X字符串:%s
- 1浮點數:%f

添加字符*中的格式說明符(例如%*s)中的一個元素告知函數忽略的元素,所以它不會將其放入輸出中。

+0

非常感謝Hoki,這是非常豐富的信息,它肯定會在未來幫助我,再次感謝。 –

相關問題