Я пытаюсь отобразить имена переменных и 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)", а не оценивать это с помощью вызова функции. В моем коде первая, третья и пятая строки определены как строки, в то время как вторая и четвертая являются функциями, которые оцениваются как строки.

Другие вопросы по тегам