使用命令
时,我的输出中出现 order 问题fprintf()
并寻求建议以了解此问题的原因,以便正确设置矩阵 A :
1 /
代码:
A=[normVaR_1d WHS_VaR1d STABLE_VaR1d;normES_1d WHS_ES1d STABLE_ES1d];
fprintf('norm\t whs\t stbl\n');
fprintf('%12.8f %12.8f %12.8f\n',A);
output =[0.0203 0.0233 0.0242 ; 0.0340 0.0301 0.0702]
wheras
expected_output=[0.0203 0.0242 0.0301 ; 0.0233 0.0340 0.0702]
2 / 为了提高屏幕的可读性,有一种方法可以添加一个带有2个字符串的描述性空列' va' &安培;&安培; ' ES'如:
norm whs stbl
va 0.0203 0.0242 0.0301
es 0.0233 0.0340 0.0702
由于
答案 0 :(得分:1)
解决您的第一个问题:
您只需更改A
A.'
即打印A的转置。
要解决第二个问题,至少有两种方法:
1)定义行的名称并使用for
循环打印矩阵A的每一行
2)使用table
(来自R2013b)
这是上述解决方案的代码:
% Define an example matrix
A=[1 2 3;4 5 6]
% Define row names
r_names={'va';'es'};
% Define variables names
var_names={'norm' 'whs' 'stbl'};
disp('Question 1')
% Just print the matrix A
fprintf('%f %f %f\n',A.')
disp(' ')
disp('Question 2')
% Print matrix A with row names
fprintf('\tnorm\t whs\t stbl\n')
for i=1:2
fprintf('%s %f %f %f\n',char(r_names(i)),A(i,:))
end
disp(' ')
disp('Question 2 alternative')
% Print matrix A using "table"
norm=A(:,1);
whs=A(:,2);
stbl=A(:,3);
table(norm,whs,stbl,'rownames',r_names)
这是输出:
A =
1 2 3
4 5 6
Question 1
1.000000 2.000000 3.000000
4.000000 5.000000 6.000000
Question 2
norm whs stbl
va 1.000000 2.000000 3.000000
es 4.000000 5.000000 6.000000
Question 2 alternative
ans =
norm whs stbl
____ ___ ____
va 1 2 3
es 4 5 6
希望这有帮助。