Matlab-筆記1-基本操作


打算將之前利用工作閒暇之餘複習的Matlab複習筆記電子化,目的是為了方便查找,也列出幾個常忘記的細節做備註。

Matlab是2018的版本,功能與第一次摸到這套軟體時介面略有差異,不過還是挺好用的

以下是作為提示的範例,Matlab本來就是列行式(矩陣)的應用,小時候學到這個還不知道列行式跟矩陣有多好用,長大才知道~
順帶一提,以前學校老師都說這是行列式,但coding時都是先寫列再寫行,那就從現在開始更正為列行式吧。


u是一個列矩陣,裡面的元素用中括號[ ]列出,
Matlab的索引(Index)是從1開始數,其他像是C語言就是從0開始

  • A=u(1):將u陣列的第(1)個元素(element)指定給A;
    因此可以知道A的值(value)就是u陣列的第1個元素為0
  • u(6)=-2: 這是強迫指定及強迫新增的特性,直接將其他值放入u陣列,原本的u只有5個元素,強迫加入第6個元素其值為-2;
  • find(u):功能是為了求出u陣列中,其值不等於0的索引(index),注意該功能只有告訴我們第幾個值不為零,而非直接告訴我們不等於零的值是多少
    那麼要如何得知不等於零的值是多少?
    以下是好用的方法

    其中~=的意義就是"不等於",若不等於零,則邏輯判斷為真(True)
    先抓出滿足(u~=0)的元素的布林(True=1 False=0)再將這些1與0對陣列u相乘,即可得到對應的值而非索引了
    --(u~=0)會得到的答案=[0 1 1 1 1 1],這是一個邏輯陣列(logical array)代表著的第1個元素跟0比是相同的,故「不滿足」「不相等的條件」,所以吐出0(False);
    相反的,剩下五個元素,跟0都不同,因此滿足了條件,故答案為1
    得到邏輯陣列後,將之與原陣列相乘,即可得到該對應的值
    │心得│:邏輯陣列可以當作一般陣列作運用的啟示。

  • a與b都是兩個1x3(1列3行)的列矩陣
    c將兩列矩陣合併為一個1x6的列矩陣
    d矩陣將ab兩矩陣合併為一個2x3的二維陣列
    差異在於c的表達式沒有分號,d陣列有分號(;)
    │心得│:可以把分號看成換行會比較好理解。
  • D陣列是d陣列的轉置(transpose),就是把列行元素互換的結果,非常簡單但是非常好用,用來解數學問題真的很方便


  • e=D(2:3,:) ,將D的第2列一直到第3列的元素都選起來(此時元素有[-1 1; 6 0],接著告訴電腦,列的那行全部都要取(利用:冒號)
    │心得│:冒號可以當作選擇區間的表達式或是全選的意思,分號則是消音(不顯示)
  • 當然也可只取一個值出來,直接指定f為D陣列中地3列第1行的元素(6)

  • j k L三個行向量列出非0元素的索引值,語法為
    [列,行,值],且是從左邊行比較到右邊行,由上列比較到下列的
    所以j向量是輸出
    D陣列中第1行裡面,第1、2、3行元素不為零;D陣列中第二行的第1、2元素不為零
    k向量則是說
    D陣列中第1列裡面,第1列的第1行、第2列的第1行、第3列的第1行元素不為零;第1列的第2行、第2列的第2行不為零
    故元素分別為 1 1 1 2 2
    L向量則是輸出對應的值
  • max找出各中的最大值
  • size輸出m列n行
  • sum則是將各的值加總
----
之後在來寫運算跟實用例好了,打下來印象比較深刻,不然每次久沒用都忘光光,重新複習超累
hash tag可以是"另類的日記"吧(笑)

留言

熱門文章