2015-02-18 4 views
0

Мой главный код - это код tcl, но он вызывает алгоритм Matlab для вычислений. Затем результаты вычислений передаются в основной код tcl. Я хочу ограничить десятичные точки на выходе до 2. В настоящее время я получаю 680.9166666666666. Я бы хотел, чтобы это было 680,92. Есть ли какая-нибудь команда Matlab, которую я могу использовать для этого?Как ограничить десятичные точки в выходе Matlab?

+0

что относительно 'формат короткий г'? –

+1

Какой у вас тип вывода? Вы пишете файл? Командное окно? Я бы рекомендовал посмотреть ['fprintf()'] (http://www.mathworks.com/help/matlab/ref/fprintf.html) или ['sprintf()'] (http: //www.mathworks. com/help/matlab/ref/sprintf.html), в зависимости от ваших потребностей. Дополнительную информацию о ширине поля см. В аргументе ['formatSpec'] (http://www.mathworks.com/help/matlab/ref/fprintf.html#inputarg_formatSpec). – excaza

+0

Из того, что я понимаю, формат shortg будет меняться только так, как выходы отображаются в окне команд Matlab. Я хочу, чтобы на самом деле округлить выходы до меньших десятичных точек, прежде чем загружать их обратно в скрипт tcl. –

ответ

0

Чтобы ответить на вопрос, у вас есть либо sprintf(), либо fprintf(). Основное различие между ними состоит в том, что sprintf() выводит строку переменной и fprintf() выходы в файл или в командное окно.

Например:

a = 123.456; 

% Method 1 
a2 = sprintf('%.2f', a); 

% Method 2 
fprintf('%.2f\n', a) 

% Method 3 
fID = fopen('testfile.txt', 'w+'); % Open file for writing, discard existing contents 
fprintf(fID, '%.2f\n', a); 
fclose(fID); 

Смотрите документацию на formatSpec аргумент для получения информации о том, как указать нужный вам формат.


В продолжение моих комментариев выше, это манипуляция, вероятно, лучше делать в сценарии Tcl до вывода в таблицу. Я не знаком с языком, но предполагаю, что он использует что-то похожее на sprintf(), что является довольно общей командой программирования.

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