MATLAB: ???Неопределенная функция или метод 'sprint' для входных аргументов типа 'char' - PullRequest
0 голосов
/ 24 ноября 2010

Я пытаюсь показать 16 десятичных разрядов результата.Код, который я поставил, такой:

clear x;
x = 0.245;
1-x+1/2*x.^2-1/6*x.^3+1/24*x.^4
sprint('%0.16f', ans)

Matlab даст мне ответ

ans =

0.7827

??? Undefined function or method 'sprint' for input arguments of type 'char'.

У меня два вопроса:

  1. Что происходит?Я думаю, что использовал его раньше, и у меня не было проблем с 'sprintf' для отображения результата с несколькими десятичными знаками.
  2. Что я могу сделать, чтобы показать больше десятичных знаков?

Спасибовы!

Ответы [ 3 ]

4 голосов
/ 24 ноября 2010

sprintf форматирует данные в строку;он не отображает его для вывода.Кроме того, это sprintf, а не sprint, это та функция, которую вы набрали, и на которую жалуется MATLAB.(Он не знает, что такое sprint, но знает о sprintf.)

Если вы хотите сохранить ответ в строке как число до 16 десятичных знаков, используйте sprintf.Чтобы просто отобразить его, что, я думаю, вам нужно, используйте printf.В любом случае проблема ясна;Вы забыли f в sprintf!

1 голос
/ 24 ноября 2010

Я думаю, что вы не использовали sprint раньше.Не существует встроенной функции MATLAB с именем sprint, вам следует использовать sprintf.

1 голос
/ 24 ноября 2010

Ну, я думаю 'vpa', это помогает мне показывать больше десятичных знаков

clear x;
clear expresion;
x = 0.245;
expresion = 1-x+1/2*x.^2-1/6*x.^3+1/24*x.^4
%sprint('%0.16f', ans)
vpa(expresion,16)

EDIT: и это ответ Matlab:

expresion =

0.7827


ans =

.7827116041927082
...