精华内容
下载资源
问答
  • 学数值计算还有复变函数了喔,矩阵忘干净了。又看了一遍 蓝棕 的相关的讲解,总结一下。1.向量是什么?从初到末的箭头(物理角度,表示一种运动过程)有序的数字列表(计算机/数学角度)[1,2]加和数乘运算有意义的...

    学数值计算还有复变函数了喔,矩阵忘干净了。又看了一遍 蓝棕 的相关的讲解,总结一下。

    1.向量是什么?从初到末的箭头(物理角度,表示一种运动过程)

    有序的数字列表(计算机/数学角度)[1,2]

    加和数乘运算有意义的anything(抽象意义)

    12两种理解之间的关系就是线性代数的奥秘,即几何角度与数值角度。

    一个向量的坐标由一对数构成,可以理解为从原点到终点的箭头,描述运动过程。

    比如,规定好坐标平面的单位,[1,2],第一个数表示沿x轴走了1个单位;第二个数表示沿y轴走了2个单位。从原点出发的箭头和坐标向量一一对应。

    向量的相加和数乘,从1运动效果的角度来看,十分直观。即总效果等于各个分量上的效果和,所以向量的相加和数乘可以变为坐标运算。

    2.线性组合,张成空间与基

    向量的另一种理解:缩放分量并且相加,它表示一种变换。例如在正交基

    下,[3,2]表示的变化为i伸长为原来的三倍,j伸长为原来的2倍,最后把两者相加。在这种理解下,基向量其实就是用来缩放的对象。

    为基,在

    的拉伸下表示向量

    ,我们把这叫做线性组合,线性的意思即固定其中一个参数,拉伸后的向量始终在一条直线上移动,如图。

    展开全文
  • 向量在向量所垂直的平面投影过程

    一、记录的内容

            向量在平面上的投影问题十分常见。所以记录一下向量是如何在法平面所垂直的平面上的投影过程。实际上这是高中的初等几何内容,不过就当是复习一下。

            首先,我们要明白向量在另一向量上的投影。如果把向量\vec{a}在非零向量\vec{b}上的投影记作\vec{a'},那么

    \vec{a'}=\frac{\vec{a}\cdot \vec{b}}{|| \vec{b} ||^2}\vec{b}

            其中“\cdot”是点积,即向量对应元素的乘积然后相加。

            其次,有了上面的公式,我们就可以通过向量加减法得到向量在法向量所垂直的平面上的投影向量了。假设平面p的法向量为\vec{n},向量\vec{a}在平面p上的投影为\vec{a_p},向量\vec{a}在法向量\vec{n}上的投影为\vec{a'},那么根据向量加法有

    \vec{a_p}+\vec{a'}=\vec{a}

            它们之前的关系如下图所示:

            所以最终向量\vec{a}在法向量\vec{n}所垂直的平面p上的投影向量为

     \vec{a_p}=\vec{a}-\vec{a'}=\vec{a}-\frac{\vec{a}\cdot \vec{n}}{|| \vec{n} ||^2}\vec{n}

        其中“\cdot”是点积,即向量对应元素的乘积然后相加。如果法向量\vec{n}为单位向量,可继续化简为\vec{a_p}=\vec{a}-\vec{a'}=\vec{a}-\frac{\vec{a}\cdot \vec{n}}{|| \vec{n} ||^2}\vec{n}=\vec{a}-(\vec{a}\cdot \vec{n})\vec{n}

            注意:由于向量也可以认为是一个矩阵,所以它也可以通过向量计算的方式表达,不过在计算的时候可能会出现矩阵转置运算啥的,但本质上和以上表达的是一个东西。

    二、参考资料

            Vector projection - Wikipedia

            已知法向量,某一向量投影到其平面,计算投影向量

    展开全文
  • 4.1 数组运算和矩阵运算从外观形状和数据结构来看,二维数组和数学中的矩阵没有区别....所以,使用MATLAB时,特别要明确搞清数组运算和矩阵运算的区别.表4.1.1列出了两种运算指令形式的实质内涵的异同.4.1.1 数组...

    4.1 数组运算和矩阵运算

    从外观形状和数据结构来看,二维数组和数学中的矩阵没有区别.但是,矩阵作为一种变换或映射算符的体现,矩阵运算有着明确而严格的数学规则.而数组运算是MATLAB软件所定义的规则,其目的是为了数据管理方面,操作简单,指令形式自然和执行计算有效.所以,在使用MATLAB时,特别要明确搞清数组运算和矩阵运算的区别.表4.1.1列出了两种运算指令形式的实质内涵的异同.

    4.1.1 数组运算和矩阵运算指令形式和实质内涵

    数组运算

    矩阵运算

    指令

    含义

    指令

    含义

    A.'

    非共轭转置

    A'

    共轭转置

    A=s

    把标量s赋给数组A的每个元素

    s+B

    把标量s分别与数组B的每个元素相加

    s-B, B-s

    标量s分别与数组B的元素之差

    s.*A

    标量s分别与数组A的元素之积

    s*A

    标量s分别与矩阵A的元素之积

    s./B, B.\s

    标量s分别被数组B的元素除

    s*inv(B)

    矩阵B的逆乘标量s

    A.^n

    数组A的每个元素的n次方

    A^n

    A为方阵时,矩阵A的n次方

    A+B

    数组对应元素的相加

    A+B

    矩阵相加

    A-B

    数组对应元素的相减

    A-B

    矩阵相减

    A.*B

    数组对应元素的相乘

    A*B

    内维相同矩阵的乘积

    A./B

    A的元素被B的对应元素除

    A/B

    A右除B

    B.\A

    一定与上相同

    B\A

    A左除B(一般与右除不同)

    exp(A)

    以e为底,分别以A的元素为指数,求幂

    expm(A)

    A的矩阵指数函数

    log(A)

    对A的各元素求对数

    logm(A)

    A的矩阵对数函数

    sqrt(A)

    对A的积各元素求平方根

    sqrtm(A)

    A的矩阵平方函数

    从上面可以看到,数组运算的运算如:乘,除,乘方,转置,要加"点".所以,我们要特别注意在求"乘,除,乘方,三角和指数函数"时,两种运算有着根本的区别.另外,在执行数组与数组运算时,参与运算的数组必须同维,运算所得的结果数组也是总与原数组同维.

    4.2 数组的基本运算

    在MATLAB中,数组运算是针对多个数执行同样的计算而运用的.MATLAB以一种非常直观的方式来处理数组.

    4.2.1 点转置和共轭转置

    . ' —— 点转置.非共轭转置,相当于conj(A').

    >> a=1:5;

    >> b=a. '

    b =

    1

    2

    3

    4

    5

    >> c=b. '

    c =

    1 2 3 4 5

    这表明对行向量的两次转置运算便得到原来的行向量.

    ' —— 共轭转置.对向量进行转置运算并对每个元素取其共轭.如:

    >> d=a+i*a

    d =

    Columns 1 through 3

    1.0000 + 1.0000i 2.0000 + 2.0000i 3.0000 + 3.0000i

    Columns 4 through 5

    4.0000 + 4.0000i 5.0000 + 5.0000i

    >> e=d'

    e =

    1.0000 - 1.0000i

    2.0000 - 2.0000i

    3.0000 - 3.0000i

    4.0000 - 4.0000i

    5.0000 - 5.0000i

    4.2.2 纯量 (标量) 和数组的四则运算

    纯量和数组之间可以进行简单数学运算.如:加,减,乘,除及其混合运行.

    >> g=[1 2 3 4

    5 6 7 8

    9 10 11 12]

    >> g=g-2

    g =

    -1 0 1 2

    3 4 5 6

    7 8 9 10

    >> 2*g-1

    ans =

    -3 -1 1 3

    5 7 9 11

    13 15 17 19

    4.2.3 数组间的四则运算

    在MATLAB中,数组间进行四则运算时,参与运算的数组必须具有相同的维数,加,减,乘,除运算是按元素与元素的方式进行的.其中,数组间的加,减运算与矩阵的加,减运算要同,运算符为:"+","-".但是,数组间的乘,除运算与矩阵间的乘,除运算完全不同,运算符号也有差别,数组间的乘,除运算符为:".*","./"或".\".

    1. 数组按元素相加,减

    >> g=[1 2 3 4

    5 6 7 8

    9 10 11 12]

    >> h=[1 1 1 1; 2 2 2 2; 3 3 3 3]

    >> g+h % 按元素相加

    ans =

    2 3 4 5

    7 8 9 10

    12 13 14 15

    >> ans-h % 按元素相减

    ans =

    1 2 3 4

    5 6 7 8

    9 10 11 12

    >> 2*g-h % 混合运算

    ans =

    1 3 5 7

    8 10 12 14

    15 17 19 21

    2. 按元素乘

    >> g.*h

    ans =

    1 2 3 4

    10 12 14 16

    27 30 33 36

    3. 按元素除

    数组间的除法运算符有两个,即左除:"./"和右除:".\",它们之间的关系是:

    a./b=b.\a

    >> g./h

    ans =

    1.0000 2.0000 3.0000 4.0000

    2.5000 3.0000 4.1000 4.0000

    3.0000 3.3333 3.6667 4.0000

    >> h.\g

    ans =

    1.0000 2.0000 3.0000 4.0000

    2.5000 3.0000 4.1000 4.0000

    3.0000 3.3333 3.6667 4.0000

    4.2.4 幂运算

    在MATLAB中,数组的幂运算的运算为:".^",表示每一个元素进行幂运算.

    >> g.^2 % 数组g每个元素的平方

    ans =

    1 4 9 16

    25 36 49 64

    81 100 121 144

    >> g.^(-1) % 数组g的每个元素的倒数

    ans =

    1.0000 0.5000 0.3333 0.2500

    0.2000 0.1667 0.1429 0.1250

    0.1111 0.1000 0.0909 0.0833

    >> 2.^g % 以g的每个元素为指数对2进行乘方运算

    ans =

    2 4 8 16

    32 64 128 256

    512 1024 2048 4096

    >> g.^h % 以h的每个元素为指数对g中相应元素进行乘方运算

    ans =

    1 2 3 4

    25 36 49 64

    729 1000 1331 1728

    >> g.^(h-1)

    ans =

    1 1 1 1

    5 6 7 8

    81 100 121 144

    4.2.5 数组的指数,对数和开方运算

    在MATLAB中,所谓数组的运算实质是是数组内部每个元素的运算,因此,数组的指数,对数和开方运算与标量的运算规则完全是一样的,运算符函数分别为:exp(

    ),log( ),sqrt( )等.

    >> a=[1 3 4;2 6 5;3 2 4];

    >> c=exp(a)

    c =

    2.7183 20.0855 54.5982

    7.3891 403.4288 148.4132

    20.0855 7.3891 54.5982

    >>

    数组的对数,开方运算与数组的指数运算,其方式完全一样,这里不详述.

    4.3 向量运算

    对于一行或一列的矩阵,为向量,MATLAB有专门的函数来进行向量点积,叉积和混合积的运算.

    4.3.1 向量的点积运算

    在高等数学中,我们知道,两向量的点积指两个向量在其中一个向量方向上的投影的乘积,通常用来定义向量的长度.在MATLAB中,向量的点积用函数"dot"来实现,其调用格式如下:

    C=dot(A,B) —— 返回向量A与B的点积,结果存放于C中.

    C=dot(A,B, DIM) —— 返回向量A与B在维数为DIM的点积,结果存放于C中.

    >> A=[2 4 5 3 1];

    >> B=[3 8 10 12 13];

    >> C=dot(A,B)

    C =

    137

    >> C=dot(A,B,4)

    C =

    6 32 50 36 13

    4.3.2 向量的叉积运算

    在高等数学中,我们知道,两向量的叉积返回的是与两个向量组成的平面垂直的向量.在MATLAB中,向量的点积用函数"cross"来实现,其调用格式如下:

    C=cross(A,B) —— 返回向量A与B的叉积,即:,结果存放于C中.

    C=cross(A,B, DIM) —— 返回向量A与B在维数为DIM的叉积,结果存放于C中.

    >> A=[2 4 5];

    >> B=[3 8 10];

    >> C=cross(A,B)

    C =

    0 -5 4

    4.3.3 向量的混合运算

    >> D=dot(A, cross(B,C))

    D =

    41

    上例表明,首先进行的是向量B与C的叉积运算,然后再把叉积运算的结果与向量A进行点积运算.

    4.4 矩阵的基本运算

    如果说MATLAB的最大特点是强大的矩阵运算功能,此话毫不为过.事实上,MATLAB中所有的计算都是以矩阵为基本单元进行的.MATLAB对矩阵的运算功能最全面,也是最为强大的.矩阵在形式上与构造方面是等同于前面所述的数组的,当其数学意义却是完全不同的.

    矩阵的基本运算包括矩阵的四则运算,矩阵与标时的运算,矩阵的幂运算,指数运算,对数运算,开方运算及以矩阵的逆运算,行列式运算等.

    4.4.1 矩阵的四则运算

    矩阵的四则运算与前面介绍的数组的四则运算基本相同.但也有一些差别.

    1. 矩阵的加减

    矩阵的加,减与数组的加,减是完全相同的,运算时要求两矩阵的大小完全相同.

    >> a=[1 2; 3 5; 2 6];

    >> b=[2 4; 1 8; 9 0];

    >> c=a+b

    c =

    3 6

    4 13

    11 6

    2. 矩阵的相乘

    对于矩阵的乘法,从线性代数中,我们知道,要求进行相乘的两矩阵有相同的公共维.如:

    >> a=[1 2; 3 5; 2 6];

    >> b=[2 4 1; 8 9 0];

    >> c=a*b

    c =

    18 22 1

    46 57 3

    52 62 2

    设A矩阵为一个阶的矩阵,则要求与之相乘的B矩阵必须是一个阶,得到矩阵是阶的.即,只有当第一个矩阵 (左矩阵) 的列数等于第二个矩阵

    (右矩阵) 的行数时,两个矩阵的乘积才有意义.

    3. 矩阵的除法

    对于矩阵的除法有两个运算符号,分别为左除符号"\"和右除符号"/".矩阵的右除运算速度要慢一点,而左除运算可以避免奇异矩阵的影响.

    对于方程,若此方程为超定的方程,则使用除法可以自动找到使的平方最小化的解.若此方程为不定方程,则使用除法运算符至少求得的解至多有rank(A)

    (矩阵A的秩)个非零元素,而且求得的解是这种类型的解中范数最小的一个.

    >> a=[21 34 20; 5 78 20; 21 14 17; 34 31 38];

    >> b=[10 20 30 40]';

    >> x=b\a

    x =

    0.7667 1.1867 0.8767

    上面方程是超定方程.要注意的:结果矩阵x是列向量形式.如果,

    >> a=[21 34 20 5; 78 20 21 14; 17 34 31 38];

    >> b=[10 20 30]';

    >> x=b\a

    x =

    1.6286 1.2571 1.1071 1.0500

    上面的方程为不定方程.

    4. 矩阵与标量间的四则运算

    矩阵与标量的四则运算和数组与标量间的四则运算完全相同,即矩阵中的每个元素与标量进行加,减,乘,除四则运算.需要说明的是,当进行除法运算时,标量只能做除数.

    5. 矩阵的幂运算

    矩阵的幂运算与标量的幂运算不同.用符号"^",它不是对矩阵的每个元素进行幂运算,而是与矩阵的某种分解有关.

    >> b=[21 34 20; 78 20 21; 17 34 31];

    >> c=b^2

    c =

    3433 2074 1754

    3555 3766 2631

    3536 2312 2015

    6. 矩阵的指数,对数运算与开方运算

    矩阵的指数运算,对数运算与开方运算与数组相应的运算是不同的.它并不是对矩阵中的单个元素的运算,而是对整个矩阵的运算.这些运算函数如下:

    expm, expm1, expm2, expm3 —— 指数运算函数;

    logm —— 对数运算函数;

    sqrtm —— 开方运算函数.

    >> a=[1 3 4; 2 6 5; 3 2 4];

    >> c=expm(a)

    c =

    1.0e+004 *

    0.4668 0.7694 0.9200

    0.7919 1.3065 1.5613

    0.4807 0.7919 0.9475

    >> c=logm(a)

    c =

    0.5002 + 2.4406i 0.5960 - 0.6800i 0.7881 - 1.2493i

    0.4148 + 0.4498i 1.4660 - 0.1253i 1.0108 - 0.2302i

    0.5780 - 1.6143i 0.4148 + 0.4498i 1.0783 + 0.8263i

    >> c=sqrtm(a)

    c =

    0.6190 + 0.8121i 0.8128 - 0.2263i 1.1623 - 0.4157i

    0.3347 + 0.1497i 2.3022 - 0.0417i 1.1475 - 0.0766i

    1.0271 - 0.5372i 0.3347 + 0.1497i 1.6461 + 0.2750i

    7. 矩阵的转置,逆运算与行列式运算

    矩阵的转置的运算符为"'".求逆用运算函数:inv( ).而用函数:det( )则可求的矩阵行列式的大小.

    >> a=[1 2 0; 2 5 -1; 4 10 -1];

    >> c=a'

    c =

    1 2 4

    2 5 10

    0 -1 -1

    >> b=inv(a)

    b =

    5 2 -2

    -2 -1 1

    0 -2 1

    >> d=det(a)

    d =

    1

    4.5 矩阵的特殊运算

    矩阵的特殊运算包括矩阵特征值运算,条件数运算,奇异值运算,范数运算,秩运算,正交化运算,迹运算,伪逆运算等,这些运算,MATLAB都可以非常方便地给出.

    4.5.1 矩阵的特征值运算

    在线性代数中,计算矩阵的特征值过程相当复杂.而在MATLAB中,矩阵特征值运算只需用函数"eig( )"或"eigs(

    )"计算即可得到.其使用格式如下.

    E=eig(X) —— 生成由矩阵X的特征值所组成的一个列向量;

    [V,D]=eig(X) ——

    生成两个矩阵V和D,其中V是以矩阵X的特征向量作为列向量组成的矩阵,D是由矩阵X的特征值作为主对角线元素构成的对角矩阵.

    eigs( )函数使用迭代法求解矩阵的特征值和特征向量.

    D=eigs(X) —— 生成由矩阵X的特征值所组成的一个列向量.X必然是方阵,最好是大型稀疏矩阵;

    [V,D]=eigs(X) ——

    生成两个矩阵V和D,其中V是以矩阵X的特征向量作为列向量组成的矩阵,D是由矩阵X的特征值作为主对角线元素构成的对角矩阵.

    >> a=[1 2 0; 2 5 -1; 4 10 -1];

    [b,c]=eig(a)

    b =

    -0.2440 -0.9107 0.4472

    -0.3333 0.3333 0.0000

    -0.9107 -0.2440 0.8944

    c =

    3.7321 0 0

    0 0.2679 0

    0 0 1.0000

    4.5.2 矩阵 (向量) 的范数运算

    为了反映了矩阵 (向量)

    某些特性,线性代数中引入了范数的概念,它分为2-范数,1-范数,无穷范数和Frobenius范数等.在MATLAB中,用函数norm(

    )或normest( ) 计算矩阵 (向量) 的范数.其使用格式如下.

    norm(X) —— 计算矩阵 (向量) X的2-范数;

    norm(X,2) —— 同上;

    norm(X,1) —— 计算矩阵 (向量) X的1-范数;

    norm(X,inf) —— 计算矩阵 (向量) X的无穷范数;

    norm(X,'fro') —— 计算矩阵 (向量) X的Frobenius范数;

    normest(X) —— 只计算矩阵 (向量)

    X的2-范数;并且是2-范数的估计值,适用于计算norm(X)比较费时的情况.

    >> X=hilb(4)

    X =

    1.0000 0.5000 0.3333 0.2500

    0.5000 0.3333 0.2500 0.2000

    0.3333 0.2500 0.2000 0.1667

    0.2500 0.2000 0.1667 0.1429

    >> norm(4)

    ans =

    4

    >> norm(X)

    ans =

    1.5002

    >> norm(X,2)

    ans =

    1.5002

    >> norm(X,1)

    ans =

    2.0833

    >> norm(X,inf)

    ans =

    2.0833

    >> norm(X,'fro')

    ans =

    1.5097

    >> normest(X)

    ans =

    1.5002

    4.5.3 矩阵的条件数运算

    矩阵的条件数是判断矩阵"病态"程度的一个量值,矩阵A的条件数越大,表明A越"病态",反之,表明A越"良态".如Hilbert矩阵就是一个有名的病态矩阵.

    cond(X) —— 返回矩阵X的2-范数的条件数;

    cond(X, P) —— 返回矩阵X的P-范数的条件数,其中P为1,2,inf或fro;

    rcond(X) ——

    用于计算矩阵条件数的倒数值,当矩阵X为"病态"时,rcond(X)就接近0,X为"良态"时,rcond(X)就接近1.

    condest(X) —— 计算关于矩阵X的1-范数的条件数的估计值.

    >> M=magic(3)

    M =

    8 1 6

    3 5 7

    4 9 2

    >> H=hilb(4)

    H =

    1.0000 0.5000 0.3333 0.2500

    0.5000 0.3333 0.2500 0.2000

    0.3333 0.2500 0.2000 0.1667

    0.2500 0.2000 0.1667 0.1429

    >> c1=cond(M)

    c1 =

    4.3301

    >> c2=cond(M)

    c2 =

    4.3301

    >> c3=rcond(M)

    c3 =

    0.1875

    >> c4=condest(M)

    c4 =

    5.3333

    >> h1=cond(H)

    h1 =

    1.5514e+004

    >> h2=cond(H,inf)

    h2 =

    2.8375e+004

    >> h3=rcond(H)

    h3 =

    3.5242e-005

    >> h4=condest(H)

    h4 =

    2.8375e+004

    从上计算可以看出,魔方矩阵比较"良态",而Hilbert矩阵是"病态"的.

    4.5.4 矩阵的秩

    秩是线性代数中的相当重要的概念之一,通常矩阵可以经过初等行列式或列变换,将其转化为行阶梯形矩阵,而行阶梯矩阵所包含非零行的行数是一个定的,这个确定的非零行的行数就是矩阵的秩.矩阵中的秩用函数rank(

    )来计算.

    >> T=rand(6)

    T =

    0.9501 0.4565 0.9218 0.4103 0.1389 0.0153

    0.2311 0.0185 0.7382 0.8936 0.2028 0.7468

    0.6068 0.8214 0.1763 0.0579 0.1987 0.4451

    0.4860 0.4447 0.4057 0.3529 0.6038 0.9318

    0.8913 0.6154 0.9355 0.8132 0.2722 0.4660

    0.7621 0.7919 0.9169 0.0099 0.1988 0.4186

    >> r=rank(T)

    r =

    6

    由上计算可知,矩阵T为满秩矩阵.

    >> T1=[1 1 1; 2 2 3]

    T1 =

    1 1 1

    2 2 3

    >> r=rank(T1)

    r =

    2

    由上计算可知,矩阵T1为行满秩矩阵.

    展开全文
  • 但要注意的是如果选择的是行向量,则是矩阵放在右边相乘,如果是列向量,则需要把矩阵放在向量左边相乘。如果不考虑位移,则我们可以用一个3X3矩阵来表示旋转或者缩放操作。如果我们用行向量来表示某个模型空间中的...

    在3d世界中,我们需要不停的在各个空间里面转换坐标,比如把物体由模型空间转化到世界空间,把世界空间中的点转换到摄像机的视图空间。我们知道,坐标转换可以用向量与一个转换矩阵相乘来达到转换目的。但要注意的是如果选择的是行向量,则是矩阵放在右边相乘,如果是列向量,则需要把矩阵放在向量左边相乘。如果不考虑位移,则我们可以用一个3X3矩阵来表示旋转或者缩放操作。

    如果我们用行向量来表示某个模型空间中的某个点p( pxpy pz),假设模型经过旋转后,新的轴在世界空间中表示为 r(表示左右轴),u(表示向上的轴)f(表示向前的轴),则旋转矩阵为

    rx ry rz

    ux uy uz

    fx fy fz

    p与矩阵相乘后我们得到新的x点为 px*rx+py*ux+pz*fx,也就是p与旋转矩阵的列向量的点积。向量的点积也可以理解为一个向量在一个向量上面的投影。如果我们从列的角度来观察刚才的旋转矩阵,其实我们可以发现第一列其实是原来的r轴向相反的方向旋转后的新的r轴。同理第二列第三列相同。这样我们就不难理解了。一个模型旋转一个角度,我们可以让模型不动,让坐标轴沿着相反的方向旋转相同的角度。旋转后,每列就是坐标轴新的向量表示。点与旋转矩阵相乘,其实就是原来的点在新的坐标轴上面的投影。

    在把所有的模型都转换到世界坐标空间后,我们需要转到到视图空间,假定我们知道摄像机的从模型空间到世界空间的转换矩阵就是上面的旋转矩阵,要把物体转换到相机空间,就需要上面矩阵的逆,正交矩阵的逆可以用该矩阵的转置矩阵来表示。所以变换矩阵变为

    rxux fx

    ry  Uy  fy

    rz uz  fz

    世界空间中的某点p与该矩阵相乘,则得到(p*r  ,p*u  ,p*f),从这里可以看到世界空间的点转换到视图空间,其实就是点在相机各个坐标上面的投影。这里没有考虑位置转换,只考虑3X3矩阵是为了简化思考。

    展开全文
  • 向量向量就是3D笛卡尔坐标中的一个顶点。单位向量就是长度为1的向量、标量:标量是一个只有数值大小 没有方向,部分有征服之分。通俗来说标量只有大小没有方向的量。向量和标量的区别就是 向量是有方向的。标量...
  • 矩阵的特征值和特征向量特征值的理解特征值 、特征向量、方阵的关系几何意义物理意义特征分解特征值和特征向量的含义的应用补充一点 特征值的理解 其实刚大学的时候的线性代数课,也只是简单讲解了特征值和...
  • 向量矩阵微积分是单个变量微积分的延申 1 向量梯度 向量梯度:令g(w)g({ \bold w})g(w)为一个m个变量的可微数值函数,其中w=[w1,…,wm]T{ \bold w}=[w_1,\dots,w_m]^Tw=[w1​,…,wm​]T 由此可以得到g(w)g({ \bold...
  • 对于反对称矩阵,它的主对角线的元素全为0,而位于主对角线两侧对称的元素反号。 2. 反对称矩阵性质 3. 向量的反对称矩阵 有的地方a的反对称矩阵 也记作 a^ 即 a^ b = a x b (向量a 叉乘 向量b = a的反对...
  •   记直接线性变换得到的旋转矩阵为RRR,平移向量为ttt,投影方式为, R←(RRT)−12R R \leftarrow (RR^T)^{-\frac{1}{2}}R R←(RRT)−21​R 然后代入线性方程组,利用最小二乘法更新平移向量ttt。   验证: 随机...
  • 原标题:数据科学中的数学基础: 矩阵向量空间毫无疑问,数学是数据科学的灵魂。不管是机器学习或是统计学模型,从本质讲都是数学模型,因此,扎实的数学知识对于理解模型假设和分析模型结果至关重要。可能很多...
  • 以前读书的那阵,对这几个概念总是分的不太清,比如...从小我们对于年龄、大小、高低、远近等概念有比较直观的感受,并且知道这些概念会至少一段时间内不会变化,比如说妈妈买了十个苹果,无论放在茶几,还是放在厨
  • 此节对应虎书第二章(Miscellaneous Math)与第五章(Linear Algebra) 1. 图形学所需基础 1.1 基础数学 线性代数,微积分,统计 Linear algebra,calculus,statics ...2. 向量Vectors 2.1 向量的基本性质 写.
  • 引言当面对的数据被抽象为一组向量,那么有必要研究一些向量的数学性质。而这些数学性质将成为PCA的理论基础。向量运算即:内积。首先,定义两个维数相同的向量的内积为:(a1,a2,⋯,an)T⋅(b1,b2,⋯,bn)T=a1b1+a2b2+...
  • 矩阵向量乘 1.矩阵的几何意义 ...向量fff必然向量a,b,ca,b,ca,b,c组成的三维线性空间中 下图中含两个线性空间: (1)由标准正交基组成的三维线性空间 (2)由向量a,b,ca,b,ca,b,c组成的二维线
  • 向量坐标与旋转矩阵

    2021-08-06 16:12:21
    但要注意的是如果选择的是行向量,则是矩阵放在右边相乘,如果是列向量,则需要把矩阵放在向量左边相乘。如果不考虑位移,则我们可以用一个3X3矩阵来表示旋转操作。 如果我们用行向量来表示某个模型空间中的某个点...
  • 相机校准中的投影矩阵为3x4矩阵P = camera matrix * [R|t]但是,OpenCV文档中,没有提到R和t是由rvec和tvec形成,将标定目标对象空间转换为摄影机空间还是由摄影机世界空间方向rodrigues(rvec).t()和<...
  • 3D数学 向量矩阵

    2021-10-03 13:14:20
    3D数学坐标系左手系、右手系向量常用公式向量的模(长度)标准化向量点积叉积矩阵常用性质逆矩阵性质正交矩阵齐次空间MVP矩阵局部空间世界空间模型矩阵观察空间观察矩阵裁剪空间透视投影正交投影屏幕空间容易让人产生...
  • 如图所示,对于向量b\textbf{\textit{b}}b,它在向量a\textit{\textbf{a}}a投影p=xa\textit{\textbf{p}}=x\textit{\textbf{a}}p=xa,二者误差e=b−p=b−xa\textit{\textbf{e}}=\textbf{\textit{b}}-\textit{\...
  • 视觉SLAM十四讲(三)——三维空间刚体运动()三维空间刚体运动的描述方法有:旋转矩阵、变换矩阵、旋转向量、欧拉角和四元数,接下来将逐一介绍它们一、旋转矩阵点、向量、坐标系* 点——存在于三维空间之中,点和点...
  • 透视投影矩阵(所有都是右乘列向量)投影矩阵简单版(从某视频里看到的):f为投影焦距。以下是unity的透视投影矩阵:解释一下各个变量,结合下图理解:Fov:是unity摄像机的一个属性,Field of View。表示摄像机的...
  • xA的每一行(每个基)上投影,获得这个方向的分量。如果A是数据阵,那么A的每一行x方向投影表示为x的第i个位置。 Ax=bAx=bAx=b的解:如果所有分量线性无关,就能表示整个空间,有唯一解;如果存在相关,...
  • Is there an easier command to compute vector projection?I am instead using the following:x = np.array([ 3, -4, 0])y = np.array([10, 5, -6])z=float(np.dot(x, y))z1=float(np.dot(x, x))z2=np.sqrt(z1)z3.....
  • 投影变换 视口变换 模型视图矩阵 矩阵构造 单位矩阵 平移 旋转 缩放 综合变换 运用模型视图矩阵 3D数学 向量 typedef float M3DVector3f[3]; typedef float M3DVector4f[4]; 声明初始化四分量: M3...
  • 第3章 矩阵特征值与特征向量的计算 数值分析与各种算法的matlab代码3.3.2 Jacobi旋转法 由于一次正交相似变换A→C=PTAP可将A的两个非对角元素化为零。因此可选一系列正交变换矩阵Pk,对A进行正交相似变换,直至将A...
  • 因为需要用到矩阵处理库所以需要先配置一、Eigen库的配置(VS2017)然后自己的VS工程属性中的这个附加包含进去注意看清楚了 是D:\Dependencies\eigen-eigen\eigen-eigen; 前面部分是你们自己的路径 后面的这个eigen-...
  • PCA降维的主方向和协方差矩阵的特征向量,有什么关系?
  • 透视投影矩阵计算

    2021-12-11 15:53:09
    整理计算机图形学中,3D物体从摄像机坐标转化为规范化投影坐标的求解过程
  • 该公式的推导,主要的步骤有两个:第一:寻找到一个向量,该向量向量α的向量积=向量b第二:将寻找到的这个向量转化成对应的反对称矩阵其中旋转轴用单位向量表示说明:这里是不是感觉和SLAM十四讲上面的公式不一样...
  • 文章目录前言一、视点和视线二、投影矩阵 前言 本篇继续前面文章来讲解投影矩阵相关内容。 一、视点和视线 二、投影矩阵
  • 本篇并不是纯数学的介绍,而是从实际应用的角度来想大家介绍向量矩阵的内容,所以说并不会十分枯燥,我们采用先介绍计算的细节和过程,然后介绍我们将哪些地方用到它们,所以当大家看到复杂的计算时候不要抵触,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 41,235
精华内容 16,494
关键字:

向量在矩阵上的投影