在命令窗口打印结果

时间:2016-02-08 14:50:49

标签: matlab window command workspace

我在MATLAB上编写一个简单的脚本时遇到了一个愚蠢的问题:

z=(RASIS-LASIS)/norm(RASIS-LASIS);
v=(RASIS-PSIS)/norm(RASIS-PSIS);
y=cross(z,v)/norm(cross(z,v));
x=cross(y,z);
R_pel=[x',y',z'];

O_thigh=(LE+ME)/2;
Y=(HF-O_thigh)/norm(HF-O_thigh);
u=(LE-O_thigh)/norm(LE-O_thigh);
X=cross(Y,u)/norm(cross(Y,u));
Z=cross(Y,X);
R_thigh=[X',Y',Z'];
R_j=R_pel'*R_thigh;            


ang_beta=asin(R_j(3,2))*(180/pi);
ang_alpha=-asin(R_j(1,2)/cos(ang_beta))*(180/pi);
ang_gamma=-asin(R_j(3,1)/cos(ang_beta))*(180/pi);

问题是,在命令窗口我插入RASISLASISPSISLEMEHF向量,然后单击回车,变量出现在右侧的工作空间列中,并带有我们分配的相对值;现在,我运行我的脚本来计算变量zvy等,但我想要计算的变量只出现在工作区中。如何使它们出现在命令窗口中,例如,以这种形式出现(如果结果是矩阵):

ans= x x x
     x x x
     x x x

2 个答案:

答案 0 :(得分:1)

如果你在行尾不用;,MATLAB将在命令行显示该行的结果:

z=(RASIS-LASIS)/norm(RASIS-LASIS)
v=(RASIS-PSIS)/norm(RASIS-PSIS)

更好的方法是使用disp功能:

disp(z);
disp(v);
%// etc...

更好的方法是使用[sprintf]生成格式化输出:(http://www.mathworks.com/help/matlab/ref/sprintf.html

sprintf('z:%10f\r\nv:%10f',z,v)

其中\r\n是一个新行,%10f将插入一个正好占用10个字符并在前面填充空格的浮点数(这有助于您保持对齐数字。您甚至可以指定小数位数例如,您可以将%10f更改为%10.3f

答案 1 :(得分:0)

您可以明确display变量:

disp(ang_beta)

(或者,压缩变量名称sprintf)。

虽然select br.badge_id from badge_requirements br group by br.badge_id having count(distinct mission_id) = (select count(*) from missions); 对标量变量非常有用,但对于矩阵显示来说可能很麻烦。但是,使用format函数,可以更改命令窗口中的数字格式以允许更高或更低的精度,或使用指数。