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
, 당신은 항상 또 다른 옵션은 cellfun
및 num2str
를 사용하여 숫자로 셀 어레이의 각 항목을 변환하는 것입니다 sprintf
YY = reshape(str2num(sprintf('%s ', ff{:})), [], numel(ff)).';
로 교체 할 수 있습니다 첫 번째 차원을 따라 결과를 연결합니다. 한 번만 num2str
를 호출하고 필요한 메모리가 숫자와 같은 데이터를 저장하는 데 필요한 공간보다 덜 될 것입니다 strjoin
에 의해 만들어진 임시 문자열을 저장하기 때문에
values = cellfun(@num2str, ff, 'UniformOutput', false);
YY = cat(1, values{:});
첫 번째 옵션은 빠른 속도로 약 두 배 데이터 유형 (double
).