печать огромной матрицы строка за строкой - PullRequest
2 голосов
/ 14 апреля 2020

У меня огромная двумерная матрица, символизирующая количество файлов с определенным именем numberpattern в каталоге.

Чтобы напечатать это, я начал преобразовывать эти данные в массив ячеек из отдельных строк и заменять все '0' с пустыми строками. Однако это крайне неэффективно. Любой совет как сделать это быстрее ?

data=randi([0 10],4000,27); %4000 matching number patterns, 27 directories, 0-10 counts
tic;
str=arrayfun(@num2str,data,'uni',0); %get string of the count
str2 = cellfun(@(x)regexprep(x,'^0$',' '),str,'uni',0); %replace 0 with ' '
toc
%takes around 2.0 to 2.5 seconds on my machine... too long!!

Идея состоит в том, чтобы затем напечатать его

for row=1:size(data,1)
  fprintf('%3s',str2{row,:})
  fprintf('\n')
end

1 Ответ

1 голос
/ 14 апреля 2020

Это позволяет избежать создания массива ячеек и использует strrep вместо regexp:

data = randi([0 10], 4000, 27); % 0-10 counts
for row = 1:size(data, 1)
    disp(strrep(sprintf('%3i', data(row, :)), ' 0', '  '))
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...