官术网_书友最值得收藏!

2.2 線性相關

給定向量組V = [v1, v2,…, vq],如果存在不全為零b1b2、…、bq使得下式成立:

則稱向量組V線性相關(linear dependence);否則,V線性無關(linear independence)。如圖2.7(a)所示,線性無關v1v2構造一個二維平面Hv1v2常被稱作基底向量(basis vector)。

在二維平面H內,av1v2表示,從而v1v2a線性相關。圖2.7(b)中,a不能用v1v2表示,從而v1v2a線性無關。如果,aaH平面內投影,a中不能被v1v2表達的部分,即a - a,垂直于H平面。

圖2.7 線性相關與線性無關

圖2.8(a)給出的平面內,x方向單位向量為i = [1, 0]Ty方向單位向量為j = [0, 1]T。圖2.8(b)給出空間中,x方向單位向量為i = [1, 0, 0]Ty方向單位向量為j = [0, 1, 0]Tz方向單位向量為k = [0, 0, 1]Tijk這三個向量為相互垂直基底向量,也叫作正交基(orthogonal basis);因為ijk這三個向量正交且模為1,因此它們也叫作標準正交基。如圖2.8(c)和(d)所示,在平面內、三維空間中,數據可以通過這些空間基底向量表達。

圖2.8 向量直角坐標系

下面舉個例子,RGB(red green blue)三原色模型中任意一個顏色看成是以下三個基底向量構成線性組合。v1代表紅色,v2代表綠色,v3代表藍色。

v1v2v3這三個基底向量,模均為1,而且相互垂直,如圖2.9(a)所示。

圖2.9 三原色空間

圖2.9(b)展示,v1([1, 0, 0] red)、v2([0, 1, 0] green)和v3([0, 0, 1] blue)這三個基底向量任意兩個組合構造向量w1([1, 1, 0] yellow)、w2([1, 0, 1] magenta)和w3([0, 1, 1] cyan)。w1w2w3也可以是三維空間基底向量;印刷四分色模式(CMYK color model)就引入w1w2w3這三個基底向量。此外,CMYK還有一個維度,灰度。

從RGB模式向CMYK模式轉換是一種基底轉換。圖2.10展示v1v2v3這三個基底向量構造更多空間向量。

圖2.10 三原色空間向量分布

除向量以外,在v1v2v3這三個正交向量構造空間中,數據點也是一種重要數據展現形式,圖2.11中數據點顏色對應即空間點位置。有這一節內容作為基礎,本章下兩節要從數據和向量投影兩個角度研究數據矩陣。以下代碼獲得圖2.9~圖2.11。

圖2.11 v1v2v3這三個基底向量構造空間數據點

B4_Ch1_2.m

close all; clear all; clc

loc = [0,0,0];

figure(1)
x_i = [1,0,0]; y_j = [0,1,0]; z_k = [0,0,1];
plot_vector(loc,x_i); hold on
plot_vector(loc,y_j);
plot_vector(loc,z_k);
fig_dec

figure(2)
plot_vector(loc,x_i); hold on
plot_vector(loc,y_j);
plot_vector(loc,z_k);
plot_vector(loc,x_i+y_j); hold on
plot_vector(loc,x_i+z_k);
plot_vector(loc,y_j+z_k);

fig_dec

figure(3)
r     = 0.75;
[x,y,z] = Spherical_grid(r);

subplot(1,2,1)
x = x(:); y = y(:); z = z(:);
hold on
for i = 1:length(x)
    plot_vector(loc,[x(i),y(i),z(i)])
end
fig_dec

r     = 1;
[x,y,z] = Spherical_grid(r);

subplot(1,2,2)
x = x(:);
y = y(:);
z = z(:);
hold on
for i = 1:length(x)
    plot_vector(loc,[x(i),y(i),z(i)])
end
fig_dec

steps = [0:0.1:1];
[X,Y,Z] = meshgrid(steps,steps,steps);
figure(4)
scatter3(X(:),Y(:),Z(:),8,[X(:),Y(:),Z(:)],'filled'); hold on
fig_dec
view(115,20);

function [x_grid,y_grid,z_grid] = Spherical_grid(r)

theta = 0:pi/25:pi/2;
phi   = 0:pi/25:pi/2;
[theta,phi] = meshgrid(theta,phi);
x_grid = r.*sin(theta).*cos(phi);
y_grid = r.*sin(theta).*sin(phi);
z_grid = r.*cos(theta);

end
function plot_vector(loc,vec)
h = quiver3(loc(1),loc(2),loc(3),...
    vec(1),vec(2),vec(3),'color',vec);
h.AutoScale = 'off';
h.ShowArrowHead = 'off';
end

function fig_dec

daspect([1,1,1])
box off; view(135,20); axis tight; grid on
xticks([0:0.5:1]); yticks([0:0.5:1]); zticks([0:0.5:1])
xlabel('x, red'); ylabel('y, green'); zlabel('z, blue')
xlim([0,1]);ylim([0,1]);zlim([0,1]);
grid off
hAxis = gca;
hAxis.XRuler.FirstCrossoverValue  = 0; % X crossover with Y axis
hAxis.YRuler.FirstCrossoverValue  = 0; % Y crossover with X axis
hAxis.ZRuler.FirstCrossoverValue  = 0; % Z crossover with X axis
hAxis.ZRuler.SecondCrossoverValue = 0; % Z crossover with Y axis
hAxis.XRuler.SecondCrossoverValue = 0; % X crossover with Z axis
hAxis.YRuler.SecondCrossoverValue = 0; % Y crossover with Z axis

end
主站蜘蛛池模板: 合作市| 贵定县| 绍兴市| 贵溪市| 昌邑市| 怀化市| 渭源县| 阳山县| 深水埗区| 延庆县| 常宁市| 登封市| 绍兴市| 多伦县| 巩留县| 江源县| 安西县| 贵州省| 报价| 丹巴县| 连江县| 肃宁县| 澄城县| 博罗县| 吕梁市| 谷城县| 黎城县| 高要市| 昂仁县| 汝州市| 神木县| 巴彦县| 峨眉山市| 体育| 平原县| 西昌市| 灌云县| 海门市| 稻城县| 贵阳市| 治县。|