Matlab 使用一个for循环打印多个disp函数

Matlab 使用一个for循环打印多个disp函数,matlab,for-loop,vector,Matlab,For Loop,Vector,我有一系列的显示功能,从x1到x7。这些都包含字符串和变量,如: x1=[“V和U的标量乘法的结果:”,num2strscalar_uv]; x2=与上述类似,但例如两个标量的交叉乘法值 而不是通过以下方式打印每个文件: dispx1; dispx2; dispx3 我认为可以通过for循环或嵌套的for循环将它们全部打印出来,但我就是不知道怎么做。我最好不要直截了当的解决方案,我不会对他们说不,而是一些可能的提示或提示 一个简单的示例解决方案是制作一个单元格数组并在其中循环,或者使用celld

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

x1=[“V和U的标量乘法的结果:”,num2strscalar_uv]; x2=与上述类似,但例如两个标量的交叉乘法值

而不是通过以下方式打印每个文件: dispx1; dispx2; dispx3


我认为可以通过for循环或嵌套的for循环将它们全部打印出来,但我就是不知道怎么做。我最好不要直截了当的解决方案,我不会对他们说不,而是一些可能的提示或提示

一个简单的示例解决方案是制作一个单元格数组并在其中循环,或者使用celldisp来显示它。但是,如果您想很好地打印到命令窗口,也就是特别格式化,您可以使用fprintf函数并在换行符中格式化。例如:

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

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

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

我无法让它正常工作,相反,它先打印出所有文本,然后打印出看起来不太好的值。它还有丑陋的C1、:=等,这是一个障碍。