2012-05-18 1 views
0

모든 행의 크기가 다른 행렬이 있습니다. 추가 자리에는 0이 채워집니다. 이 행렬은 일부 입력 인수에 따라 다르므로 고정 된 수의 행과 크기가 아니라 동적입니다.matlab 함수에 여러 크기의 여러 세트를 보내는 방법은 무엇입니까?

for e.g. 
1 2 4 5 0 
1 3 0 0 0 
1 2 3 4 5 

다른 크기 (하나의 행마다 하나씩)를 만들어서 다른 함수 (예 : cartprod http://www.mathworks.com/matlabcentral/fileexchange/5475-cartprod-cartesian-product-of-multiple-sets? 당신이 cartprod의 입력 벡터의 모든 0을 원하지 않는 경우

답변

0

, 당신은이를 사용할 수 있습니다

CellArrayWithoutZeros = cellfun(@(x) x(find(x)), num2cell(Matrix, 2), 'UniformOutput', false); 

CartProdResultMatrix = cartprod(CellArrayWithoutZeros{:}); 

편집 : 당신은 오른쪽에 (단지 앞의 0을 차단하려면 0이 아닌 요소)의 입력 벡터 :

CellArrayWithoutLeadingZeros = cellfun(@(x) x(1:find(x, 1, 'last')), num2cell(Matrix, 2), 'UniformOutput', false); 

CartProdResultMatrix = cartprod(CellArrayWithoutLeadingZeros{:});