2013-12-22 3 views
2

MATLAB에서 셀 배열의 행 수를 계산하려고합니다. 아래 코드를 사용하여 셀 배열의 열 수를 계산하지만 행 수를 계산하는 방법을 모르겠습니다. 일례로서 MATLAB에서 셀 배열의 행 수를 계산하는 방법

filledCells = ~cellfun(@isempty,a); 
columns = sum(filledCells,2) 

는 전 셀 어레이와 같은 x를 가지고 :

x =  [5] [1x8 double] [5] 

이 셀 어레이는 하나의 행과 세 개의 열을 갖는다. "1"과 같은 행 수를 계산하는 코드가 필요하지만 계산할 방법을 찾지 못했습니다.

+1

예를 들려 줄 수 있습니까? 셀 배열'a'의 내용은 무엇입니까? –

+2

길의 수를 계산할 때 행 수는 'sum (filledCells) ' 입니다. – Oleg

+0

@Oleg 작동하지 않았습니다. – SaraDean

답변

5

(3210) 나는 아이디어의 대부분을 사용하지만 herohuyongtao 내가 덕분에 모든 당신의 행의 수는 어느 NR 제대로

[nr,nc]=size(x) 

을 일이 생각에 도달 한 말의 도움으로 다음 작동하지 않았다.

+1

이제 네가 무슨 뜻인지 알 겠어. 예,이 작업이 가능합니다. 얼마나 간단합니까! :) – herohuyongtao

+0

@ herohuyongtao 예, 당신 덕분에 너무 간단했습니다. – SaraDean

2

시도

%% "a" is the cell array, total num of rows will be saved in "rows" 
num = length(a); % num of objects in "a" - big rows 
rows = 0; 
for i=1:num 
    [r c] = size(C{i}) 
    rows = rows+r; 
end 
+0

이전에 사용했지만 작동하지 않았습니다. – SaraDean

+0

@SaraDean Updated. – herohuyongtao

+0

x {1,1} = [2 3 4], x {1,2} = [2], x {1,3} = [2 3 4] – SaraDean

2

약간 더 일반적인 접근 방식은 : 행이나 열을 위해 작동하고, 계정으로 각 셀의 크기를 취합니다

dim = 1; %// 1 for rows, 2 for columns 
result = sum(cellfun(@(c) size(c,dim), a), dim); 

예 :

>> a = {1, [2 3], []; 4, [], 5} 
a = 
    [1] [1x2 double]  [] 
    [4]    [] [5] 
>> dim = 1; 

을 주는

2

가장 간단한 방법은 크기의 첫 번째 치수를 얻는 것입니다.

rowCount = size(x,1) 
관련 문제