Предположим, у нас есть матрица N-by-d в Matlab. Пусть это будетЭффективно писать матрицу в файл в пользовательском формате в Matlab
A = rand(N,d);
Кроме того, пусть D
быть массив ячеек строк, например,
D = {'a1', 'a2', ..., 'aN'};
Я хотел бы создать текстовый файл, у которого я-я строка имеет вид
D{i} 1:A(i,1) 2:1:A(i,2) ... N:A(i,N)\n
Существует тривиальный способ сделать это; открыть файл для записи и с помощью двойного for
цикла написать каждую строку следующим образом:
fid = fopen('test.txt', 'w');
for i=1:size(A,1)
fprintf(fid, '%s', D{i});
for j=1:size(A,2)
fprintf(fid, ' %d:%g', j, A(i,j));
end
fprintf(fid, '\n');
end
fclose(fid);
Это, однако, может быть очень медленным, если N и d достаточно велико. Я ищу эффективный метод (если он есть), который мог бы избежать использования этих циклов for
. По крайней мере, один из них.
Большое спасибо @horchler! Это именно то, что я искал! Это действительно ускорило весь процесс. Во всяком случае, это хорошая функция 'fprintf' знать! – nullgeppetto