Maths(004)矩陣對向量做了什麼?
- 所有代碼2017a測試通過,只支持2014b以後版本。
- 歡迎投稿此專欄,每周六左右更新。
- 歡迎規範轉載。(轉載請私信溝通,謝謝)
開工了,每逢佳節胖三斤半的我又回來了。
從這一期開始,簡單的聊一下線性代數吧。說實話,回想當年那薄薄的一本線性代數(同濟版),真是囫圇吞棗。私以為書還是要讀大厚本,因為我是比較笨的那種人。讀幾個公式能夠做到融會貫穿,臣妾做不到啊!
1,
還是舉個簡單的例子。
x = [0;... 1];A = [1,2;... 3,4]/4;b = A*x;fig = figure(1);ax = axes(fig);ax.NextPlot = add;plt1 = plot(ax,[0,x(1)],[0,x(2)],ro-);grid onplt2 = plot(ax,[0,b(1)],[0,b(2)],bo-);axis equalax.XAxisLocation = origin;ax.YAxisLocation = origin;ax.XLim = [-3,3];ax.YLim = [-3,3];
通過直接觀察,從紅色矢量變換到藍色矢量,基本可以將變換總結為兩種形式:
a,對原有矢量進行旋轉
b,對原有矢量進行縮放
加一個點進行進一步的理解。
x = [0,1;... 1,0];A = [1,2;... 3,4]/4;b = A*x;fig = figure(2);ax = axes(fig);ax.NextPlot = add;plt1 = plot(ax,[0,x(1,1),x(1,2),0],[0,x(2,1),x(2,2),0],ro-);grid onplt2 = plot(ax,[0,b(1,1),b(1,2),0],[0,b(2,1),b(2,2),0],bo-);axis equalax.XAxisLocation = origin;ax.YAxisLocation = origin;ax.XLim = [-3,3];ax.YLim = [-3,3];
2,單純用來旋轉的A
那麼應該有一個矩陣能夠實現只旋轉不伸縮的:
x = [0,1;... 1,0];T = [cos(pi/4),-sin(pi/4);...%逆時針旋轉45度 sin(pi/4),cos(pi/4)];b = T*x;fig = figure(3);ax = axes(fig);ax.NextPlot = add;plt1 = plot(ax,[0,x(1,1),x(1,2),0],[0,x(2,1),x(2,2),0],ro-);grid onplt2 = plot(ax,[0,b(1,1),b(1,2),0],[0,b(2,1),b(2,2),0],bo-);axis equalax.XAxisLocation = origin;ax.YAxisLocation = origin;ax.XLim = [-3,3];ax.YLim = [-3,3];
3,單純用來伸縮的A
如果想要只伸縮不旋轉矢量呢?那麼這個公式大家應該很熟悉:
也就是說,需要x為A的特徵向量之一
x = [0,1;... 1,0];A = [2,0; 0,2];b = A*x;[V,D] = eig(A) %求解特徵向量,特徵值fig = figure(4);ax = axes(fig);ax.NextPlot = add;plt1 = plot(ax,[0,x(1,1),x(1,2),0],[0,x(2,1),x(2,2),0],ro-);grid onplt2 = plot(ax,[0,b(1,1),b(1,2),0],[0,b(2,1),b(2,2),0],bo-);axis equalax.XAxisLocation = origin;ax.YAxisLocation = origin;ax.XLim = [-3,3];ax.YLim = [-3,3];
V = 1 0 0 1D = 2 0 0 2
對於2×2矩陣,單純用來旋轉的矩陣T和 是怎麼關聯的?如果感興趣,請翻一下Maths(001)或許你能有答案。
MEZhang:Maths(001)e的一些概念(a)
推薦閱讀:
※MATLAB+seconds(1)
※[matDL框架開發直播:2]全連接層(dense)的實現和優化
※想用別人的實驗來算東西,但沒有他的數據,只有文獻里的圖線怎麼辦?
※MATLAB神經網路(四):基於Adaboost的強分類器設計
※用MATLAB如何找到軌跡圖中的拐點?