Возможно ли в matlab явно отформатировать выходные числа? - PullRequest
4 голосов
/ 19 ноября 2009

Я знаю о формате MATLAB long , format short , eng ... и так далее. Но short и long всегда будут отображать заранее определенное количество десятичных знаков с показателем степени, например, банк формата будет всегда отображать 2 десятичных знака.

Есть ли возможность поместить ваш явный формат в "фортран", как f8.3 -> 1234.678?

Я ищу способ отображения чисел с четырьмя десятичными знаками, а остальные перед десятичной запятой без показателя степени.

Ответы [ 7 ]

11 голосов
/ 19 ноября 2009

Я не знаю, как указать глобальный формат нужного вам типа. sprintf('%15.4f', x) или num2str(x, '%15.4f') делайте то, что вы ищете, если вы не против вызывать их явно каждый раз.

5 голосов
/ 05 июля 2011

Согласно документации Matlab , доступной на их веб-сайте, вы можете использовать

format shortG

для установки формата отображения для вывода на n.4.

4 голосов
/ 19 ноября 2009

Согласно документации это позволяет форматировать число.

Также форматирование также хорошо документировано.

3 голосов
/ 05 июля 2011

Есть два простых решения:

  1. с использованием функции sprintf :

    str = sprintf ('%. 4f', myNumber);

  2. с использованием форматирования на основе Java, которое является гораздо более мощным ( дополнительная информация ):

    str = char (java.text.DecimalFormat ('#. 0000'). Format (myNumber));

1 голос
/ 20 ноября 2009

Самое близкое, что я мог придумать, это:

format bank

Это даст вам не E, и 2 десятичных знака.

попробуй прочитать

help format

чтобы искать другие варианты ( Я больше не использую Matlab ... переключился на Свободное ПО:) )

0 голосов
/ 03 апреля 2014

Поместите поверх файла Matlab (.m) следующее выражение «format shortG».

Пример:

format shortG;

Q = [0 0.54994 0.1998 0.1998;
 0 0.54994 0.1998 0.1998;
 0 0.54994 0.1998 0.1998;
];

disp(Q);

Доступны дополнительные параметры: Выходной формат Matlab

0 голосов
/ 20 ноября 2009

Я просто использую sprintf и num2str, как упомянуто mtrw. sprintf() предназначен для нескольких скалярных аргументов различных типов (работает с матрицами, но не совсем понятно). num2str() предназначен для использования с одной матрицей.

...