matlab biplot 符号的困惑

在matlab中做Principal component Analysis 时,常要用biplot 函数来画图,表示原分量与主分量(principal component)之间的关系,以及原始观察数据在主分量坐标下的系数。下面就是一个运行实例:

load hald;

[pc,score,latent,tsquare] = princomp(ingredients);

biplot(pc(:,1:2),‘Scores‘,score(:,1:2),‘VarLabels‘,{‘X1‘ ‘X2‘ ‘X3‘ ‘X4‘});

显示图像如下:

产生的结果数据如下图:

对比观察数据与图像,就会发现以下几个困惑:

1、X1,X2,X3,X4是原分量在主分量坐标下的矢量表达,但是矢量分量的方向都不对(见下图)。

2、所有观察数据(score)的符号和大小与图上显示不符(见下图)。

带着这些困惑,仔细查看了matlab关于biplot的帮助,发现有下面一段话:

“biplot做了一个符号转换,确保系数矩阵的每一列中的最大值为正。这样会改变一些系数矢量的方向,但会使图形更容易理解。...”(“biplot imposes a sign convention, forcing the element with largest magnitude in each column of coefs to be positive. This flips some of the vectors in coefs to the opposite direction, but often makes the plot easier to read. Interpretation of the plot is unaffected, because changing the sign of a coefficient vector does not change its meaning.”)。唉,效果适得其反啊!同时,这样做的结果同时也相应改变了score的符号,为了将score的红点画在同一个画面,score的大小也是成比例缩放了。

时间: 2024-08-29 04:29:15

matlab biplot 符号的困惑的相关文章

MATLAB——matlab特殊符号表【转载】

链接来源: matlab特殊符号表 http://blog.sina.com.cn/s/blog_4a09187801014xg9.html Character Sequence Symbol Character Sequence Symbol Character Sequence Symbol \alpha α \upsilon υ \sim ~ \beta β \phi Φ \leq ≤ \gamma γ \chi χ \infty ∞ \delta δ \psi ψ \clubsuit ♣

MATLAB的符号运算基础

作者:长沙理工大学 交通运输工程学院 王航臣 在数学运算中,运算的结果如果是一个数值,可以称这类运算为数值运算:如果运算结果为表达式,在MATLAB中称为符号运算,符号计算是对未赋值的符号对象(可以是常数.变量.表达式)进行运算和处理.MATLAB具有符号数学工具箱(SymbolicMath Toolbox),将符号运算结合到MATLAB的数值运算环境.符号数学工具箱是建立在Maple软件基础上的. (一)  符号变量建立符号变量和符号常数 建立符号变量的方法有两种,应用,应用sym与syms函

matlab特殊符号表

Character Sequence Symbol Character Sequence Symbol Character Sequence Symbol \alpha α \upsilon υ \sim ~ \beta β \phi Φ \leq ≤ \gamma γ \chi χ \infty ∞ \delta δ \psi ψ \clubsuit ♣ \epsilon ? \omega ω \diamondsuit ♦ \zeta ζ \Gamma Γ \heartsuit ♥ \eta

Matlab定义符号函数(ZZ)

M文件函数(M file function) 在线函数(Inline Function) 匿名函数(Anonymous Function) 1.M文件函数 范例 function c=myadd(a,b) %这里可以写函数的使用说明,前面以%开头 %在工作区中,help myadd将显示此处的说明 c=a+b; %end %非必须的 第一行function告诉Matlab这是一个函数,a,b是输入,c是输出,myadd是函数名.以m文件定义的函数必须保存为函数名的形式,上例中,函数应保存为mya

matlab定义符号向量---多变量函数的构建

clear all; clc; num=2; for i=1:num syms(['x',num2str(i)]); end s=sym('x',[1,num]); syms f f1; f=0; f1=0; for i=1:num f1=f1+s(i); end f=f1^2-f1; diff(f,x1)

四轴飞行器1.4 姿态解算和Matlab实时姿态显示

原创文章,欢迎转载,转载请注明出处 MPU6050数据读取出来后,经过一个星期的努力,姿态解算和在matlab上的实时显示姿态终于完成了. 1:完成matlab的串口,并且实时通过波形显示数据 2:添加RTT查看CPU使用率的扩展功能,MPU6050读取数据的优化 3:四元素表示的坐标变化,四元素与欧拉角的关系和Madgwick的IMUupdate算法 4:飞控数据采集线程和数据处理线程的安排,类似于生产者与消费者的关系. 先放个效果视频... 如果看不了视频,请打开视屏网址:http://v.

四轴飞行器1.1 Matlab 姿态显示

四轴飞行器1.1 Matlab 姿态显示 开始做四轴了,一步一步来,东西实在很多,比较杂.先做matlab上位机,主要用来做数据分析,等板子到了可以写飞控的程序了,从底层一层一层开始写..希望能好好的完成它...关于matlab上位机,首先做个姿态显示,然后等板子来了,把板子底层程序写好后,加上matlab的串口接收部分,基本的环境就算搭建好了.... 这个代码写了一天,写到最后出现戏剧性的一幕,实在是太恶心了哈..开始自己的想法就是通过输入pitch roll yaw三个欧拉角,然后在空间中现

Matlab编程基础

平台:Win7 64 bit,Matlab R2014a(8.3) "Matlab"是"Matrix Laboratory" 的缩写,中文"矩阵实验室",是强大的数学工具.本文侧重于Matlab的编程语言侧面,讲述Matlab的基本语法,以及用Matlab语言进行程序设计.值得一提的是,Matlab从R2014a版本开始支持中文语言了! 1.基本概念 Matlab默认启动后界面: Matlab有关的文件后缀: File Extension Des

matlab学习笔记第六章——基本符号演算和微分方程

1.MATLAB可以使用limit命令计算极限. >> syms x >> limit((x^3 + 1)/(x^4 + 2)) ans = 1/2 2.我们可以在MATLAB中调用isequal命令检查两个量是否相等,如果两个量不相等,isequal返回0. 3.我们使用下面的语法可以计算limx→∞f(x)形式的极限:limit(f,inf). 4.计算左右极限:我们必须给函数传递用来计算极限的变量和“left”.“right”字串,并用逗号分隔开. 5.通过调用diff命令,