Как использовать fprintf со сложными значениями - PullRequest
0 голосов
/ 14 января 2019

Мой код вычисляет действительную и мнимую части V1 следующим образом:

V1=term1/term3 + term2/term3 * i
fprintf( 'Slope V1 = %.4f\n', real(V1), imag(V1) )

Я хочу вывести комплексное число V1 следующим образом:

Slope of V1 = real(V1) + imag(V1) * i

Кажется, я никогда не получаю правильную запись %4.f. Кто-нибудь может дать мне понять, пожалуйста? Я не уверен, как обращаться со знаком +.

V1=term1/term3 + term2/term3 *i
fprintf( 'Slope V1 = %.4f\n', real(V1), imag(V1) )

Выходы

Slope V1 = 0.0000
Slope V1 = 1.4142

Я хочу получить вывод

Slope V1 = 0.0000+1.4142i

С уважением, MM

Ответы [ 3 ]

0 голосов
/ 14 января 2019

Вы пытались использовать два спецификатора формата для двух значений, которые вы хотите напечатать?

fprintf( 'Slope V1 = %.4f + %.4f i\n', real(V1), imag(V1) )

Или даже лучше (, как предложил Хантер Цзян ):

fprintf( 'Slope V1 = %.4f%+.4fi\n', real(V1), imag(V1) )

... включив + в спецификатор формата, второму числу всегда будет предшествовать либо «-», либо «+» в зависимости от знака значения. Для отрицательных мнимых чисел это предотвращает печать "+ -".

0 голосов
/ 14 января 2019

Вы можете использовать num2str, который автоматически обрабатывает комплексные числа:

fprintf(['Slope V1 = ' num2str(1+1j, '%.4f')])

или

fprintf('Slope V1 = %s', num2str(1+1j, '%.4f'))
0 голосов
/ 14 января 2019

Если вы хотите отобразить значение, у вас есть две опции:

1. disp(z);

2. fprintf("Slope V1 = %.4f %+.fi\n', real(V1), imag(V1)")

обратите внимание, что disp заканчивается новой строкой, а fprintf - нет, поэтому мы используем '\ n'

Что касается %4.f, вы используете его, если хотите, чтобы число сдвигалось на 4 пробела и принимали только целую часть. если вы хотите установить точность до 4 цифр после десятичной точки, вы должны использовать %.4f

Допустим, мы хотим отобразить 12.1234

%4.f:   12
%.4f:12.1234
%.2f:12.12
%10.2f:        12.12
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...