2017-02-01 1 views
-1

Я использую приведенный ниже код, чтобы прочитать матрицу и применить точку с запятой (;) и новую строку в конце каждого значения.Спецификатор формата Matlab fprintf для округления до 14 знаков после запятой

У меня возникли проблемы с спецификатором формата точности. Ниже блок кода - это строка из вывода csv. Вы можете видеть, что столбцы 5 и 6 отформатированы правильно, но есть экспоненциальные значения, которые мне нужно округлить до 14 знаков после запятой. Почему это не означает '% f.14'on line 4? Я думал, что он не использует экспоненциальные обозначения?

function write_to_csv(filepath, decision) 
    csv = fopen('matrix.csv', 'a+'); 
    for ii = 1:length(decision) 
     format = '%d; %f.14'; 
     fprintf(csv, format, decision(ii)); 
    end 
    fprintf(csv,'\n') 
    fclose(csv); 
end 

1; 1.032204e-03; -2.580511e-04; 1; 32190201170708; 17682101210450; 2; 7.600000e-01; -1;

Кредит MChandler для подачи вышеуказанного кода от вопроса: Add a delimiter to end of each line of csv file MATLAB

+6

Заменить '% f.14' с'% .14f '. Для получения дополнительной информации прочтите [документацию] (https://mathworks.com/help/matlab/ref/fprintf.html?requestedDomain=www.mathworks.com#input_argument_formatSpec). – codeaviator

+1

Чтобы уточнить, вы хотите, чтобы '-2.580511e-04' отображался вместо' -0.00025805110000'? – toshiomagic

+0

Да, я делаю toshiomagic – Lucas

ответ

1

Это зависит от формата переменной decision. Поскольку у вас есть %d до %f.14, он отобразит 1-мерную матрицу только %d. Он полностью игнорирует спецификатор формата фиксированной точки. Если ваше решение матрицы действительно 1-мерное, использовать format = '%.14f'; как уже упоминался в комментариях:

function write_to_csv(filepath, decision) 
    csv = fopen('matrix.csv', 'a+'); 
    for ii = 1:length(decision) 
     format = '%.14f'; 
     fprintf(csv, format, decision(ii)); 
    end 
    fprintf(csv,'\n') 
    fclose(csv); 
end 

Вы можете прочитать на спецификаторах формата здесь: https://www.mathworks.com/help/matlab/matlab_prog/formatting-strings.html#bq0z60p-1

Смежные вопросы