matlab 在fprint tf中放入一系列不同的数字

rqdpfwrv  于 2022-11-15  发布在  Matlab
关注(0)|答案(1)|浏览(213)

我正在用MatLab编写一个函数,需要在fprintf中放入一个可变范围的数字。我需要它从1开始,一直到矩阵的长度。然而,我认为应该起作用的不是给我连续的数字。

A=[1 2 3; 4 5 6; 7 8 9]
b=[2;4;6]
d=length(A)
k=1:d

然后我插入我想要的答案的函数,p。

fprintf(‘The solution is x%i equals %f \n’, k, p)

在输出响应中,它没有给出正确的k值,它应该是“1”、“2”或“3”。如果我省略“x%i等于”,答案本身就是正确的。
埃塔:现在我得到的是:

The solution is x1 equals 2.0000
The solution is x3 equals -0.6667
The solution is x1.333333e+00 equsls 0.000

如果我去掉x%i,我得到:

The solution is -0.6667
The solution is 1.3333
The solution is 0.0000
v1uwarro

v1uwarro1#

在您的示例中,k是一个由三个元素1:3组成的向量,这是打印的第一个变量。您的fprint tf(等)只是使用您的格式字符串打印1,2,3。这就是为什么你会得到..。第一行的X1等于2.0000,为什么第二行以…开始。X3.1与%i一起使用,2与%f一起使用,然后格式被回收,3再次与%i一起使用。
看起来您希望k是打印变量的索引,p是关联值,k和p具有相同数量的元素。如果是这样的话,您可以将它们堆叠到单个变量中作为行,并使用您的格式打印出来。例如,如果p是一行,请尝试以下操作:

fprintf('The solution is x%i equals %f \n', [k;p])

如果p是一列,则首先将其整形为一行:

fprintf('The solution is x%i equals %f \n', [k;p.'])

通过将k和p堆叠为同一矩阵的行,将按列顺序打印值,您将获得所需的输出。

相关问题