2012-12-06 8 views
1

matlab 배열을 셀 값의 배열로 변환하지 못했습니다.Matlab 배열을 셀 배열로 변환

stacksize = size(resultStack.('f'),1); % 2897 values 
exportc = cell(stacksize+1, 4); 

exportc{1,1} = 'top'; 
exportc{1,2} = 'bottom'; 
exportc{1,3} = 'left'; 
exportc{1,4} = 'right'; 

exportc{2:end,:} = mat2cell(resultStack.('f'), 1:stacksize, 1:4); 

입력 인자 D1 내지 D2는 입력 행렬의 크기의 각 차원에 합산해야 오류 [2897 (4)]로 끝난다.

내가 뭘 잘못하고 있니?

답변

3

mat2cell을 올바르게 사용하지 않았습니다. 여기를 사용하는 방법은 다음과 같습니다 이것이 의미하는

C = mat2cell(resultStack.('f'), ones(stacksize,1), ones(1,4)) 

: 당신은 출력 세포 C의 각 행 (모든 일의 뒤에 이유이다) 다음의 1 행과 resultStack.f의 1 열을 포함하도록 지정합니다.

는 셀에서 데이터를 불러 오는 ({}) 때 콜린 T. 나무 그늘로 표시된 바와 같이 또한, 당신은 다른 셀에서 물건을 복사 barece 인덱싱 (())를 사용해야 만 브래킷 인덱싱을 사용합니다.

따라서 코드의 전체, 수정 된 버전은 다음과 같아야합니다

exportc(1,:)  = {'top' 'bottom' 'left' 'right'}; 
exportc(2:end,:) = num2cell(resultStack.('f')); 
: 원하는 출력을 허용하기 때문에

stacksize = size(resultStack.('f'),1); % 2897 values 
exportc = cell(stacksize+1, 4); 

exportc(1,:) = {'top' 'bottom' 'left' 'right'}; 
exportc(2:end,:) = mat2cell(resultStack.('f'), ones(stacksize,1), ones(1,4)); 

또는, 당신은 새로운, 더 간단 num2cell 명령을 사용할 수 있습니다

+0

죄송합니다 +1, 문제가 하나만 있다고 가정해서는 안됩니다. 좋은 캐치. –

+0

@ColinTBowers : 내 프로그래밍 경력에서 배운 것이 있다면 * test *, * test *, * test *, * test *, * test *, * test *, * test *, * test *, * test *, * test *, * test *, * test *, * test *, * test *, * test *, * test *, * test *, * test * 그리고 * test * 다시 :) –

+0

무엇이 적절한가요? 여기에 메타? 내 답변을 삭제해야합니까, 아니면 현재 통합 한 업데이트로 남겨 두어야합니까? –

0

업데이트 : Rody는 여기서 언급 한 두 번째 문제를 코드에서 발견했습니다. 코드에 완전히 수정 된 솔루션을 통합해야하며, 만족 스럽다면 응답을 응답으로 표시하십시오. 이 응답을 불완전한 답변으로 표시하지 마십시오. 예를 들어, 당신의 코드에서

%# A simple example 
A = cell(2, 2); 
B = {'hello', 'world'}; 
A(1, :) = B; 

, 당신이 당신의 마지막 줄에 변경해야하는 또 다른 셀 어레이의 부분 집합에 셀 배열을 할당 할 때

사용 () 괄호 :

exportc(2:end,:) = mat2cell(resultStack.('f'), 1:stacksize, 1:4); 

주를이 중괄호 {}은 셀 배열의 단일 셀 내용에 대한 인덱싱을 위해 예약되어 있습니다.

관련 문제