Печать нескольких дисплеев с одной функцией for - PullRequest
0 голосов
/ 31 августа 2018

Итак, у меня есть ряд функций отображения, в диапазоне от х1 до х7. Все они содержат как строки, так и переменные, такие как:

x1 = ['The result of the scalar multiplication of V and U: ',num2str(scalar_uv)]; x2 = similar to above but with for example a value on the cross multiplication of the two scalars.

Вместо того, чтобы распечатывать каждый через: disp(x1); disp(x2); disp(x3);

Я думал, что можно будет распечатать их все через цикл for или, возможно, вложенный цикл for, но я просто не могу понять, как это сделать. Я предпочтительно не хочу прямых решений (я не скажу им нет), а скорее намеки или советы из возможных.

Ответы [ 2 ]

0 голосов
/ 03 сентября 2018

Вместо создания семи различных переменных (x1 ... x7), просто создайте массив ячеек для хранения всех ваших строк:

x{1} = ['The result of the scalar multiplication of V and U: ',num2str(scalar_uv)];
x{2} = ['Some other statement with a value at the end: ',num2str(somevar)];

Теперь вы можете написать цикл:

for iX = 1:length(x)
  disp(x{iX})
end

Или используйте cellfun для отображения их без цикла for:

cellfun(@disp,x)

Если вы действительно хотите, чтобы они назывались x1 ... x7, вы можете использовать оператор eval для получения имен переменных:

for iX = 1:7
   disp(eval(['x' num2str(iX)]));
end
0 голосов
/ 01 сентября 2018

Простым примером решения может быть создание массива ячеек и циклическое прохождение по нему или использование celldisp() для его отображения. Но если вы хотите правильно печатать, то есть специально отформатированы, в командное окно вы можете использовать функцию fprintf и форматировать ее в виде переносов строк. Например:

for displayValue = {x1, x2, x3, x4}
    fprintf('%s\n', displayValue{1});
end

Если вам нужны дополнительные параметры форматирования, такие как точность или ширина поля, код форматирования (например, %s) имеет много конфигураций. Вы можете увидеть их в справке fprintf . \n просто указывает функции fprintf создавать новую строку при печати. ​​

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...