Я хочу преобразовать очень большие матрицы в стробированную строку ячеек. Я создал следующий код, однако он очень медленный, и я хотел бы улучшить его как можно больше.MATLAB эффективно преобразует матрицу в стробированную строку ячейки
tic
r = rand(1000,1000);
p = rand(1000,1000);
a = cellstr(num2str(r(:),'%+.2f'));
a = strrep(a,'+',' ');
a = strrep(a,'0.','.');
a = strcat(a(:),{' '});
idx_05 = find(p<.05);
idx_01 = find(p<.01);
a(idx_05) = strrep(a(idx_05),' ','* ');
a(idx_01) = strrep(a(idx_01),'* ','**');
a = reshape(a,size(r));
toc
Прошедшее время 9.968568 секунд.
Профилировщик говорит, что большая часть времени проводится в команде 'strcat', поэтому попробуйте посмотреть в этом направлении. –