在fprintf中放入一系列不同的数字



我正在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等于",答案本身就是正确的。

ETA:现在我得到:

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

在您的示例中,k是三元素1:3的向量,这是打印的第一个变量。您的fprintf(etc(只是使用您的格式字符串打印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堆叠为同一矩阵的行,值将按列顺序打印,您将获得所需的输出。

相关内容

  • 没有找到相关文章

最新更新