Я пытаюсь отобразить имена переменных и num2str представления их значений в Matlab
Я пытаюсь произвести следующее: новые значения x и y равны -4 и 7 соответственно, используя команды disp и num2str. Я попытался сделать это disp("Новые значения x и y - это num2str(x) и num2str(y) соответственно"), но вместо соответствующих значений он дал num2str. Что я должен делать?
2 ответа
Как упоминал Колин, одним из вариантов будет преобразование чисел в строки с использованием num2str
, объединяя все строки вручную и передавая конечный результат в disp
, К сожалению, это может быть очень неловко и утомительно, особенно если у вас есть много цифр для печати.
Вместо этого вы можете использовать силу sprintf
, который очень похож в MATLAB на его аналог языка программирования Си. Это дает более короткие и элегантные утверждения, например:
disp(sprintf('The new values of x and y are %d and %d respectively', x, y))
Вы можете контролировать отображение переменных с помощью спецификаторов формата. Например, если x
не обязательно целое число, вы можете использовать %.4f
например, вместо %d
,
РЕДАКТИРОВАТЬ: как указал Джонас, вы также можете использовать fprintf(...)
вместо disp(sprintf(...))
,
Пытаться:
disp(['The new values of x and y are ', num2str(x), ' and ', num2str(y), ', respectively']);
Вы также можете опустить запятые, но ИМХО они делают код более читабельным.
Кстати, то, что я сделал здесь - это объединить 5 строк вместе, чтобы сформировать одну строку, а затем передать эту единственную строку в disp
функция. Обратите внимание, что я, по сути, объединил строку, используя тот же синтаксис, который вы могли бы использовать с числовыми матрицами, т.е. [x, y, z]
, Причина, по которой я могу это сделать, заключается в том, что matlab хранит символьные строки внутри AS числовых векторных строк, причем каждый символ обозначает элемент. Таким образом, вышеуказанная операция по существу объединяет 5 числовых векторов строк по горизонтали!
Еще один момент: ваш код не удался, потому что matlab рассматривал ваш num2str(x) как строку, а не как функцию. В конце концов, вы можете на законных основаниях хотеть напечатать "num2str(x)", а не оценивать это с помощью вызова функции. В моем коде первая, третья и пятая строки определены как строки, в то время как вторая и четвертая являются функциями, которые оцениваются как строки.