Проблема с выводом двух массивов в Matlab

Нужно чтобы 2 массива выводились в таком виде:

 string1 double1
 string2 double2

и так далее. При выполнении кода получается следующее:

  ID:  NaN
  Eccentricity:   NaN
  Orbital Inclination(rad): NaN
  SQRT(A)  (m 1/2): NaN
  Argument of Perigee(rad) NaN
  Af0(s):  NaN
  week: 1.000000
  0 0.011064
  319488 0.985429
  -7.943188009e-09 5153.630859
  0.8422198678 0.890038
  -1.977771616 0.000566
  -1.091393642e-11 127.000000

т.е. сначала идут все переменные из массива строк, а затем все переменные из массива double. Код:

%% Show results
clear;
load ImportResults.mat;
fID3 = fopen('out.txt', 'w');
fprintf(fID3, '          %s %f\r\n', [FieldNames;Variables]);  
fprintf(fID3, '---------------------------------');

В чем ошибка?


Ответы (1 шт):

Автор решения: CrocodilesAT

Функция fprintf принимает на вход элементы массива. В matlab массив может быть только однотипным типом данных. В вашем же коде массив не является однотипным, он - string и double. Но вы явно передаете элементы в один массив и matlab осуществляет каст к одному типу, преобразуя Variables к string.

Если хотите иметь массив с разными типами данных, создайте тип cell. Пример:

Cell_F = {"wow" "Ahah" "Nice"; 1.3 1.4 6.9}
fprintf("%s %f\r\n", Cell_F{:})

Cell_F{:} создает список массивов, разделенных запятыми, которые содержат данные каждой ячейки Cell_F.

→ Ссылка