matlab基础学习(5)之映射和正交基
一、映射
在matlab中,矢量y正交映射到矢量x上的定义如下:
子空间映射是一个例子,其中矩阵的功率线性代数记号非常重要。
代码实现如下:
>> v1 = [1;2;3]v1 = 1 2 3>> v2 = [1;-2;3]v2 = 1 -2 3>> v1' * v2ans = 6>> V=[v1,v2]V = 1 1 2 -2 3 3>> W= orth(V)W = -0.31622776601684 0.00000000000000 0.00000000000000 -1.00000000000000 -0.94868329805051 0.00000000000000>> W= orth(V)W = -0.31622776601684 0.00000000000000 0.00000000000000 -1.00000000000000 -0.94868329805051 0.00000000000000>> W1=W(:,1)W1 = -0.31622776601684 0.00000000000000 -0.94868329805051>> W2=W(:,2)W2 = 0.00000000000000 -1.00000000000000 0.00000000000000>> W1' * W2ans = -3.157438761082832e-016>> W1'*W1ans = 1.00000000000000>> W2'*W2ans = 1>> W'*Wans = 1.00000000000000 -0.00000000000000 -0.00000000000000 1.00000000000000>> x = 2 * v1 - 3 * v2x = -1 10 -3>> c1 = x' * W1c1 = 3.16227766016838>> c2 = x' * W2c2 = -10>> xw = c1 * W1 + c2 * W2xw = -1.00000000000000 10.00000000000000 -3.00000000000000>> error = x - xwerror = 1.0e-014 * 0.13322676295502 0 0.08881784197001>> norm(error)ans = 1.601186416994689e-015>> x = [1; 0; 0]x = 1 0 0>> ca = x' * W1ca = -0.31622776601684>> c1 = x' * W1c1 = -0.31622776601684>> c2 = x' * W2c2 = 1.387778780781446e-016>> xw = c1 * W1 + c2 * W2xw = 0.10000000000000 -0.00000000000000 0.30000000000000>> error = x - xwerror = 0.90000000000000 0.00000000000000 -0.30000000000000>> norm(error)ans = 0.94868329805051>> W* error??? Error using ==> mtimesInner matrix dimensions must agree.>> W'* errorans = 1.0e-015 * -0.16653345369377 -0.09984698057522>>