как написать вектор с разной длиной в файле? - PullRequest
0 голосов
/ 02 ноября 2018

У меня есть 7 векторов (L_mean_argil, L_Min_argil, L_Max_argil, R_mean_argil, R_Min_argil, R_Max_argil, Zero_argil) различной длины, и я хочу создать файл .sae со всеми векторами. Вот мой код:

fileID = fopen('BN_for_prediciting_zeros_argilliti_v1.sae','w');
fprintf(fileID,'L_mean_argil,   L_Min_argil,    L_Max_argil,    R_mean_argil,   R_Min_argil,    R_Max_argil, Zero_argil\n');
fprintf(fileID,'%6.4f, %6.4f, %6.4f, %6.4f, %6.4f, %6.4f, %6.4f \n', L_mean_argil,  L_Min_argil,    L_Max_argil,    R_mean_argil,   R_Min_argil,    R_Max_argil, Zero_argil');
fclose(fileID);

Он не записывает векторы должным образом. Кто-нибудь может мне помочь?

Я ожидаю этого:

L_mean_argil(1)   L_Min_argil(1)   ...  Zero_argil(1)
L_mean_argil(2)   L_Min_argil(2)   ...  Zero_argil(2)
...
L_mean_argil(end) L_Min_argil(end) ...  Zero_argil(end)    

Но в последней части некоторых векторов будут пустые ячейки, связанные с другими значениями

1 Ответ

0 голосов
/ 02 ноября 2018

Вот ответ, предполагающий, что вы хотите оставить пробелы в строках с отсутствующими данными.

%Sample Data all of different lengths
a = 1:4;
b = (1:6)+1;
c = (1:5)+2;

%Get max length
maxSize = max([numel(a) numel(b) numel(c)]);

%Convert to Cell array if it isn't already
a = num2cell(a,1);
b = num2cell(b,1);
c = num2cell(c,1);

%Initialize a cell to hold everything. Init to the max size
output = cell(3,maxSize);
output(1,1:numel(a)) = a;
output(2,1:numel(b)) = b;
output(3,1:numel(c)) = c;

%Print...
fprintf('%0.1f,%0.1f,%0.1f\n',output{:})

Результаты в этом:

1.0,2.0,3.0
2.0,3.0,4.0
3.0,4.0,5.0
4.0,5.0,6.0
,6.0,7.0
,7.0,
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...