2016-09-21 3 views

답변

2

for 루프를 통해 항상 YY 크기를 계속 확장하므로 솔루션이 느려질 것입니다.

이것을 최적화하려면 먼저 strjoin을 사용하여 문자열의 셀 배열을 하나의 긴 문자열로 변환 할 수 있습니다. 그런 다음이 전체 문자열에 str2num을 한 번에 적용하고 결과를 다시 만들 수 있습니다. MATLAB의 버전이 strjoin이없는 경우

YY = reshape(str2num(strjoin(ff)), [], numel(ff)).' 

% 1 2 3 4 5 
% 2 2 3 4 2 
% 3 2 3 4 3 
% 4 2 3 4 4 

, 당신은 항상 또 다른 옵션은 cellfunnum2str를 사용하여 숫자로 셀 어레이의 각 항목을 변환하는 것입니다 sprintf

YY = reshape(str2num(sprintf('%s ', ff{:})), [], numel(ff)).'; 

로 교체 할 수 있습니다 첫 번째 차원을 따라 결과를 연결합니다. 한 번만 num2str를 호출하고 필요한 메모리가 숫자와 같은 데이터를 저장하는 데 필요한 공간보다 덜 될 것입니다 strjoin에 의해 만들어진 임시 문자열을 저장하기 때문에

values = cellfun(@num2str, ff, 'UniformOutput', false); 
YY = cat(1, values{:}); 

첫 번째 옵션은 빠른 속도로 약 두 배 데이터 유형 (double).

관련 문제