我正在尝试打印比较列来比较具有两个或三个不同矢量的相同索引的元素。 我将用下一个例子说明我的问题
>> a = [5.47758 7.46578 3.45323]
a =
5.4776 7.4658 3.4532
>> b = [5.65432 4.45678 2.34789]
b =
5.6543 4.4568 2.3479
现在,如果我写
>> sprintf('%.2f %.2f\n',a, b)
我从Matlab得到以下回复
ans =
5.48 7.47
3.45 5.65
4.46 2.35`
但我希望看到这种价值呈现的方式是这个
ans =
5.48 5.65
7.47 4.46
3.45 2.35
如何使用函数sprintf(或其他函数或方式)来获得上述表示? 谢谢。
答案 0 :(得分:3)
您可以通过concatenating a
和b
将此问题解决为一个2 x 3矩阵输入参数:
>> sprintf('%.2f %.2f\n',[a; b])
ans =
5.48 5.65
7.47 4.46
3.45 2.35
SPRINTF函数通过重复使用格式化字符串来工作,因为它按照输入顺序遍历(按列顺序)每个输入参数的元素。这就是为什么在您的示例中,a
的所有值都打印出来,然后 b
的所有值,而不是交错a
和{{1的值}}
答案 1 :(得分:0)
如果您只是在屏幕上“打印”它,您可以在MATLAB控制台(或“命令窗口”)上键入:
a = [5.47758 7.46578 3.45323];
b = [5.65432 4.45678 2.34789];
c = [a',b']; % Transposing each row vector into a column vector before forming a matrix
c =
5.4776 5.6543
7.4658 4.4568
3.4532 2.3479
当您按行对矩阵进行排序时,这会更容易,例如,使用命令'sortrows'(有关其用法,请参阅'sortrows'文档:“help sortrows”或“doc sortrows”)。