matlab矩陣及其運算(三)

2021-01-14 matlab愛好者

大家好,感謝大家對matlab愛好者公眾號的厚愛!如果公眾號文章對您有幫助,別忘了分享和點讚哦!若您對公眾號有什麼意見或建議,請在公眾號中回復或在任意文章底部留言,我們會第一時間改善改進!


有流量的可以直接戳視頻

二狗在用matlab學習編程過程中,發現matlab中有大量矩陣運算,矩陣的知識了解不到位,在學習算法的過程中無法找到合適的解決問題的方法或者出現編程錯誤。好比英語發音規則都不懂,如何說一口流利的英語?地基不牢,地動山搖。這不前兩天二狗做BP算法的時候涉及到矩陣求導,這可難到二狗了,非方陣矩陣的逆矩陣怎麼求?方陣的導怎麼寫等,涉及到一系列二狗之前沒有考慮過的問題,經過一番掙扎決定還是一步一個腳印和大家學習基礎知識吧。

如果想matlab應用的得心應手,矩陣的基礎知識是必不可少的,二狗將會連續更新關於矩陣的基本運算的知識,如果大家覺得有用請持續關注「MATLAB愛好者公眾號」。

先從最基本的行列式講起。行列式是一種特定的算式,它是我們今後學習矩陣的一個基本工具。

該表示方式即為二階行列式

即為三階行列式

由兩個案例可知二項式和三項式是每行和每列不同數的乘積,再冠以正負號得到的一個代數和,該法則對所有的多項式都成立。

雖然多項式的運算法則說的很簡單,但比如給你個10x10的行列式你就很難算出行列式的值。怎麼辦?可以用降階的辦法將10X10化為2X2的不就簡單了?實際10X10化2X2也很麻煩,好比給二狗一個很複雜的加減乘除運算,二狗也很容易出錯,但降階確實是解題的思路。在此引入餘子式的辦法來降階。

在行列式中划去aij所在的第i行元素和第j列元素,剩下元素按原位置順序組成的(n-1)階行列式就叫做aij的餘子式記做Mij,稱(-1)i+jMij為aij的代數餘子式記做Aij。

利用代數餘子式即可將n階行列式寫成(n-1)的運算比如三階行列式即可寫成:

對三階行列式的另外六項做組合還可以寫成:

由行列式的定義可知,當行列式的階數n比較大時,直接用定義計算行列式比較複雜,當然用matlab還是很簡單的。但二狗還是要給大家講行列式的一些性質,用以簡化行列式的運算以及以後矩陣的運算也會用到相關知識。

(1)將行列式的各行與各列與同序號的列互換,所得到的行列式稱為行列式的轉置。

記:


的轉置。

  由計算很容易可知D與DT相等。涉及到的行列式性質二狗嫌證明太繁瑣,大家記住二狗說的是對的就行了,二狗會用matlab進行驗證行列式的各種性質的,實踐是檢驗性質的唯一標準。

(2)對換列式的兩行或兩列,行列式變號。

(3)行列式中i行和j行對應的元素相等,行列式的值為零。

(4)行列式的某一行中的所有元素都乘以同一個數K,等於K乘以這個行列式。


(5)如果行列式中某一行(列)的每一個元素的是兩個元素的和,行列式等於把這兩個元素拆分後的行列式和。

本期行列式的內容就算講完了,行列式的應用主要是求解方程組,

Ps:行列式必須是正階的即ai,j(i=j)比如

就不存在。算不出具體值

編程討論:函數det()可直接求得行列式的具體值。那麼如何根據代數餘子式降階法自己設計程序來計算行列式的值。二狗期待各位對編程感興趣的讀者嘗試一下,二狗也會在下期給出自編的求行列式值的程序。

行列式相關MATLAB代碼

clear allsyms x1 x2 x3 y1 y2 y3 format banka=round(8*rand(3));%round:隨機生成的矩陣為一3*3維的方陣,矩陣的元素為0-8之間的整數x=[x1;x2;x3];y=a*x;D=det(a);%求行列式a的值%aa=round(8*rand(3,4));det(aa)%% 求行列式的代數餘子式[n,m]=size(a);for i=1:n    ni=1:n;    ni(i)=[];    for j=1:m        mj=1:m;        mj(j)=[];        A(i,j)=(-1)^(i+j)*det(a(ni,mj));    endenda(1,1)*A(1,1)+a(2,1)*A(2,1)+a(3,1)*A(3,1)-det(a)==0;a(2,1)*A(2,1)+a(2,2)*A(2,2)+a(2,3)*A(2,3)-det(a)==0;%行列式和轉置行列式值相等det(a)==det(a')%對換列式的兩行(列),行列式變號。b=a;c=a; c(:,1)=c(:,2);c(:,2)=a(:,1);det(c)/det(b)==-1;%行列式的某一行(列)中的所有元素都乘以同一個數K,等於K乘以這個行列式e=a;e(:,1)=3*a(:,1);det(e)/det(a);%如果行列式中某一行(列)的每一個元素的是兩個元素的和,行列式等於把這兩個元素拆分後的行列式和。f=[1,x1+y1,2;3,x2+y2,4;5,x2+y2,6];g=[1,x1,2;3,x2,4;5,x2,6];h=[1,y1,2;3,y2,4;5,y2,6];det(f)-det(g)-det(h)==0;


看完還想看 (點擊下方文字直接訪問)

神經網絡連載(四)

神經網絡連載(三)

科研小助手推薦 第四期

科研小助手推薦第二期

模擬退火算法優化指派問題

本文作者:過冷水

相關焦點

  • matlab矩陣及其運算(五)
    二狗在MATLAB矩陣及其運算(三)篇章中,給大家留下關於自編行列式運算的小程序,本期二狗在此給大家解答一下自編行列式程序思路及代碼,再給大家講一下廣逆矩陣的概念,為深入學習廣逆矩陣做準備。啟下:廣逆矩陣概念在上期matlab矩陣連載中及其運算(四)中,在文末提到的廣逆矩陣概念,廣逆矩陣這個問題比較大,將會分幾期進行講解,本期給大家講講廣逆矩陣的概念。由克拉默法則知道當A∈Cnnxn時,方程組
  • MATLAB的矩陣運算與重構
    數組運算與矩陣運算在MATLAB中,術語矩陣和數組在一般情況下是沒有區別的。嚴格地說,一個矩陣就是一個二維的數組,是用來進行線性代數運算的。MATLAB運用於矩陣上的數學運算符是以線性代數中的矩陣運算法則來進行計算的,而數組運算是基於兩個矩陣對應元素之間的,所以在MATLAB中,數組運算和矩陣運算是有區別的。
  • 線性代數入門——矩陣的轉置運算及對稱矩陣的概念
    本節我們來介紹矩陣的「轉置」運算,主要包括轉置的定義和運算性質,並介紹轉置運算的一些簡單應用,例如列向量的「轉置」記法。再利用轉置的概念給出對稱矩陣的定義,並介紹關於對稱矩陣的一些基本知識。二、轉置運算滿足的運算律。(請讀者結合轉置的定義給出前三條運算律的解釋或證明。)
  • 利用圖片理解矩陣的線性運算
    利用圖片理解矩陣的線性運算 圖片的儲存方式 在計算機中,按照顏色和灰度的多少可以將圖像分為二值圖像、灰度圖像、索引圖像和真彩RGB圖像四種基本類型。
  • 線性代數入門——伴隨矩陣的定義及其基本性質
    在「行列式」一章中我們介紹過代數餘子式的概念,由此可以定義方陣的伴隨矩陣,它與下一節中要介紹的逆矩陣有密切聯繫。本節我們介紹伴隨矩陣的定義及其基本性質,並介紹一些關於伴隨矩陣的典型例題。三、伴隨矩陣的計算舉例。
  • 線性代數入門——矩陣的按行、列分塊及其簡單應用
    按行、列對矩陣分塊是一種非常重要的分塊方式,由於這裡每一個子塊都是行向量或列向量,因此與以後要學習的向量組、線性方程組等內容有著密切的聯繫。本節我們來介紹矩陣按行、列分塊的基礎知識和一些簡單應用。對分塊矩陣基本知識的介紹見下文:線性代數入門——分塊矩陣的概念及其基本運算性質二、矩陣的按列分塊。(按行分塊後,每個子塊都是一個行向量;按列分塊後,每個子塊都是一個列向量。)
  • 基於一維數組動態處理矩陣運算
    [代碼]基於一維數組動態處理矩陣運算     跳至 [1] [全屏預覽]
  • 線性代數入門——矩陣乘法的定義及其意義
    上一節中我們介紹了矩陣的加法和數乘運算,本節我們來介紹矩陣與矩陣的乘法運算,矩陣乘法在線性代數中非常重要,而且具有一些「奇怪」的性質,例如不滿足交換律等,我們在後面幾節中還會對矩陣乘法的相關內容做深入介紹。
  • 協方差矩陣是什麼_協方差矩陣計算公式_如何計算協方差矩陣
    >  協方差矩陣是什麼   在統計學與概率論中,協方差矩陣的每個元素是各個向量元素之間的協方差,是從標量隨機變量到高維度隨機向量的自然推廣。   矩陣中的數據按行排列與按列排列求出的協方差矩陣是不同的,這裡默認數據是按行排列。即每一行是一個observation(or sample),那麼每一列就是一個隨機變量。
  • 基於複數浮點運算的協方差矩陣的FPGA實現
    在充分應用FPGA並行處理能力的同時,為了擴展數據處理的動態範圍,減少數據溢出機率,避免數據截斷所產生的誤差,提高協方差矩陣的運算精度以及擴展該運算的通用性。本文以空間譜估計作為研究背景,研究了複數據運算和浮點運算的特點,提出了一種適用於任何陣列流型、任意陣元的基於複數浮點運算的協方差矩陣的FPGA實現方案。
  • 線性代數拾遺(三):線性變換以及矩陣的意義
    線性代數拾遺(一):線性方程組、向量方程和矩陣方程線性代數拾遺(二):線性方程組的解集及其幾何意義上一章我們討論了齊次和非齊次兩種線性方程組的解集,以及它們的幾何意義。是 2×2單位矩陣In的列向量。由於線性變換保持加法和數乘運算,所以
  • 教程| 基礎入門:深度學習矩陣運算的概念和代碼實現
    矩陣的標量運算和向量的標量運算是一樣的。可以簡單地將標量和矩陣中的每一個元素做運算處理(如加、減、乘、除等)。為了能進行加減運算,兩個矩陣的階必須相等。,矩陣間運算更有意思,不過在深度學習裡並不常見。從最開始的特徵輸入,我們會使用一個個高維向量將特徵輸入到神經網絡中,而每一層的權重作為列向量組成一個權重矩陣。每一層的正向傳播都需要使用矩陣乘法進行計算,而反向傳播更需要理解矩陣運算才能對其運行原理有一個較為深入的理解。本文是矩陣運算的基礎性文章,其不僅對概念的理解很是重要,同時在新手開始學著搭建機器學習系統時更為有用,因為矩陣運算的代碼在實際操作中是我們看懂一段代碼或寫出一段代碼的基礎。
  • 維納濾波原理及其matlab實現
    3.FIR維納濾波器的matlab實現2*pi;xnoise=sqrt(0.05)*randn(1,500);%產生x軸方向噪聲ynoise=sqrt(0.06)*randn(1,500);%產生y軸方向噪聲x=cos(sita)+xnoise;%產生x軸方向觀測信號y=sin(sita)+ynoise;%產生y軸方向觀測信號%產生維納濾波中x方向上觀測信號的自相關矩陣
  • 奇異值、奇異矩陣、SVD分解、正交矩陣
    這幾天做實驗涉及到奇異值分解svd(singular value decomposition),涉及到這樣的一個問題,做PCA時候400幅圖像拉成向量按列擺放,結果擺成了比如說10000*400大小的矩陣,用到svd函數進行奇異值分解找主分量,結果MATLAB提示超出內存,後來想起還有個函數叫svds,看到別人用過,以為只是一個變體
  • 三門問題及matlab仿真驗證
    今天看到一個問題——三門問題,感覺挺有趣的,自己也親自上手利用matlab仿真模擬了一下,分享給大家。【三門問題】三門問題出自美國的電視遊戲節目Let's Make a Deal,因為是由一個叫蒙提霍爾的人提出的,所以也叫蒙提霍爾問題。
  • 強大的矩陣奇異值分解(SVD)及其應用
    奇異值分解是一個有著很明顯的物理意義的一種方法,它可以將一個比較複雜的矩陣用更小更簡單的幾個子矩陣的相乘來表示,這些小矩陣描述的是矩陣的重要的特性。    右邊的三個矩陣相乘的結果將會是一個接近於A的矩陣,在這兒,r越接近於n,則相乘的結果越接近於A。
  • 如何用Matlab/Python/Stata做簡單回歸分析
    來源:金融民工新語 作者:劉新宇 NO.1 |問題描述: (1)簡單的描述性統計:均值、中位數等 (2)求出多個變量的相關係數矩陣
  • [代碼全屏查看]-基於一維數組動態處理矩陣運算
    [代碼] 基於一維數組動態處理矩陣運算 跳至 [1] [2] [3]
  • Python學習第116課——numpy.dot和矩陣相乘的數學運算
    現在先掌握最基礎的東西,然後在numpy中知道怎麼用矩陣相乘的方法去計算就可以了。matrix multiplication(矩陣相乘)就是兩個矩陣形式結構的數據進行運算的方法。同時因為矩陣在空間上是有它的意義的,所以矩陣運算是一個很精妙的東西。
  • 業界| 四大機器學習程式語言對比:R、Python、MATLAB、Octave
    它是一個 GNU 項目,與貝爾實驗室的 John Chambers 及其同事開發的 S 語言及環境類似。R 可以視為 S 的一種不同實現。二者存在一些重要差異,但使用 S 寫的很多代碼在 R 下運行時無需修改。