使用fprintf --- MATLAB订购问题

时间:2015-07-02 14:13:48

标签: matlab matrix printf

使用命令

时,我的输出中出现 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

由于

1 个答案:

答案 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   

希望这有帮助。