使用一个for循环打印多个显示功能

时间:2018-08-31 17:56:23

标签: matlab for-loop vector

因此,我有一系列显示功能,范围从x1到x7。这些都包含字符串和变量,例如:

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 :(得分:1)

一个简单的示例解决方案是制作一个单元格数组并遍历它,或者使用celldisp()来显示它。但是,如果您想在命令窗口中打印精美(即经过专门格式化),则可以使用fprintf函数并在换行符中设置格式。例如:

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

如果您需要更多格式选项,例如精度或字段宽度,则formatspec代码(示例中为%s)具有许多配置。您可以在fprintf helpdoc上看到它们。 \n只是告诉fprintf函数在打印时创建换行符。

答案 1 :(得分:0)

代替创建七个不同的变量(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