Не получить новую строку при использовании fprintf - PullRequest
0 голосов
/ 16 мая 2019

Я написал небольшую функцию для значения pyhtagorean:

function c = pyth(a,b)
% Takes two inputs of same size and returns the pythagorean of the 2 inputs
if size(a) == size(b) % checks for same size
    c = sqrt(a.*a + b.*b);  % calculates the pythagorean value
else
    fprintf('Error: Input sizes are not equal'); % returns if sizes are not the same
end

Он работает правильно, но после возврата '>>' находится на той же строке, что и мой вывод, а не на новой строкепод выходом.Это только случай для fprintf.Здесь:

>> pyth([1 2;3 4],[5 6;7 8])
ans =
    5.0990    6.3246
    7.6158    8.9443
>>
>> pyth([1 2],[1 2;3 4])
Error: Input sizes are not equal>> 

Как я могу это исправить?

Ответы [ 2 ]

3 голосов
/ 16 мая 2019

fprintf обычно для записи в файлы (отсюда f в начале). При записи в (текстовые) файлы способ обеспечить независимую от ОС разрывы строк заключается в добавлении \r\n (он же CRLF или [char(10) char(13)]) в конце вашей строки. Похоже, что при печати на консоль это не важно (то есть \n также работает в MATLAB, работающей в Linux).

Несколько советов:

  • Вместо этого можно использовать disp или display, поскольку они добавляют символ новой строки для вас.
  • Если вы хотите отобразить ошибку, почему бы не использовать error?
  • Если вы используете fprintf для печати ошибок, вы можете начать с fprintf(2, ... ), так как это напечатает текст в stderr, сделав его окрашенным в ошибки (обычно красным).
3 голосов
/ 16 мая 2019

Используйте \ n для новой строки:

fprintf('Error: Input sizes are not equal\n');
...