Matlab矩陣的生成

2022-01-05 Matlab工作坊

數值矩陣的生成

1.實數值矩陣輸入

MATLAB的強大功能之一體現在能直接處理向量或矩陣。當然首要任務是輸入待處理的向量或矩陣。不管是任何矩陣(向量),我們可以直接按行方式輸入每個元素:同一行中的元素用逗號(,)或者用空格符來分隔,且空格個數不限;不同的行用分號(;)分隔。所有元素處於一方括號([ ])內;當矩陣是多維(三維以上),且方括號內的元素是維數較低的矩陣時,會有多重的方括號。如:

>> Time = [11 12 1 2 3 4 5 6 7 8 9 10]

Time =

11 12 1 2 3 4 5 6 7 8 9 10

>> X_Data = [2.32 3.43;4.37 5.98]

X_Data =

2.43 3.43

4.37 5.98

>> Null_M = [ ] %生成一個空矩陣

2.複數矩陣輸入

複數矩陣有兩種生成方式:

第一種方式

>> a=2.7;b=13/25;

>> C=[1,2*a+i*b,b*sqrt(a);sin(pi/4),a+5*b,3.5+1]

C=

1.0000 5.4000 + 0.5200i 0.8544

0.7071 5.3000 4.5000

第2種方式

>> R=[1 2 3;4 5 6], M=[11 12 13;14 15 16]

R =

1 2 3

4 5 6

M =

11 12 13

14 15 16

>> CN=R+i*M

CN =

1.0000 +11.0000i 2.0000 +12.0000i 3.0000 +13.0000i

4.0000 +14.0000i 5.0000 +15.0000i 6.0000 +16.0000i

符號矩陣的生成

在MATLAB中輸入符號向量或者矩陣的方法和輸入數值類型的向量或者矩陣在形式上很相像,只不過要用到符號矩陣定義函數sym,或者是用到符號定義函數syms,先定義一些必要的符號變量,再像定義普通矩陣一樣輸入符號矩陣。

1.用命令sym定義矩陣:

這時的函數sym實際是在定義一個符號表達式,這時的符號矩陣中的元素可以是任何的符號或者是表達式,而且長度沒有限制,只是將方括號置於用於創建符號表達式的單引號中。如下例:

>> sym_matrix = sym('[a b c;Jack,Help Me!,NO WAY!],')

sym_matrix =

[a b c]

[Jack Help Me! NO WAY!]

>> sym_digits = sym('[1 2 3;a b c;sin(x)cos(y)tan(z)]')

sym_digits =

[1 2 3]

[a b c]

[sin(x)cos(y)tan(z)]

2.用命令syms定義矩陣

先定義矩陣中的每一個元素為一個符號變量,而後像普通矩陣一樣輸入符號矩陣。

>> syms a b c ;

>> M1 = sym('Classical');

>> M2 = sym(' Jazz');

>> M3 = sym('Blues')

>> syms_matrix = [a b c; M1, M2, M3;int2str([2 3 5])]

syms_matrix =

[ a b c]

[Classical Jazz Blues]

[ 2 3 5]

把數值矩陣轉化成相應的符號矩陣。數值型和符號型在MATLAB中是不相同的,它們之間不能直接進行轉化。MATLAB提供了一個將數值型轉化成符號型的命令,即sym。

>> Digit_Matrix = [1/3 sqrt(2) 3.4234;exp(0.23) log(29) 23^(-11.23)]

>> Syms_Matrix = sym(Digit_Matrix)

結果是:

Digit_Matrix =

0.3333 1.4142 3.4234

1.2586 3.3673 0.0000

Syms_Matrix =

[ 1/3, sqrt(2), 17117/5000]

[5668230535726899*2^(-52),7582476122586655*2^(-51),5174709270083729*2^(-103)]

注意:矩陣是用分數形式還是浮點形式表示的,將矩陣轉化成符號矩陣後,都將以最接近原值的有理數形式表示或者是函數形式表示。

大型矩陣的生成

對於大型矩陣,一般創建M文件,以便於修改,用M文件創建大矩陣,文件名為example.m

exm=[ 456 468 873 2 579 55

21 687 54 488 8 13

65 4567 88 98 21 5

456 68 4589 654 5 987

5488 10 9 6 33 77]

在MATLAB窗口輸入:

>>example;

>>size(exm)%顯示exm的大小

ans=

5 6 %表示exm有5行6列。

多維數組的創建

函數 cat

格式 A=cat(n,A1,A2,…,Am)

說明 n=1和n=2時分別構造[A1;A2]和[A1,A2],都是二維數組,而n=3時可以構造出三維數組。

>> A1=[1,2,3;4,5,6;7,8,9];A2=A1';A3=A1-A2;

>> A4=cat(3,A1,A2,A3)

A4(:,:,1) =

1 2 3

4 5 6

7 8 9

A4(:,:,2) =

1 4 7

2 5 8

3 6 9

A4(:,:,3) =

0 -2 -4

2 0 -2

4 2 0

或用另一種原始方式可以定義:

>> A1=[1,2,3;4,5,6;7,8,9];A2=A1';A3=A1-A2;

>> A5(:,:,1)=A1, A5(:,:,2)=A2, A5(:,:,3)=A3

A5(:,:,1) =

1 2 3

4 5 6

7 8 9

A5(:,:,2) =

1 4 7

2 5 8

3 6 9

A5(:,:,3) =

0 -2 -4

2 0 -2

4 2 0

特殊矩陣的生成

命令 全零陣

函數 zeros

格式 B = zeros(n) %生成n×n全零陣

B = zeros(m,n) %生成m×n全零陣

B = zeros([m n]) %生成m×n全零陣

B = zeros(d1,d2,d3…)%生成d1×d2×d3×…全零陣或數組

B = zeros([d1 d2 d3…])%生成d1×d2×d3×…全零陣或數組

B = zeros(size(A)) %生成與矩陣A相同大小的全零陣

命令 單位陣

函數 eye

格式 Y = eye(n) %生成n×n單位陣

Y = eye(m,n) %生成m×n單位陣

Y = eye(size(A))%生成與矩陣A相同大小的單位陣

命令 全1陣

函數 ones

格式 Y = ones(n) %生成n×n全1陣

Y = ones(m,n) %生成m×n全1陣

Y = ones([m n]) %生成m×n全1陣

Y = ones(d1,d2,d3…)%生成d1×d2×d3×…全1陣或數組

Y = ones([d1 d2 d3…]) %生成d1×d2×d3×…全1陣或數組

Y = ones(size(A))%生成與矩陣A相同大小的全1陣

命令 均勻分布隨機矩陣

函數 rand

格式 Y = rand(n) %生成n×n隨機矩陣,其元素在(0,1)內

Y = rand(m,n) %生成m×n隨機矩陣

Y = rand([m n]) %生成m×n隨機矩陣

Y = rand(m,n,p,…) %生成m×n×p×…隨機矩陣或數組

Y = rand([m n p…]) %生成m×n×p×…隨機矩陣或數組

Y = rand(size(A))%生成與矩陣A相同大小的隨機矩陣

rand %無變量輸入時只產生一個隨機數

s = rand('state') %產生包括均勻發生器當前狀態的35個元素的向量

rand('state', s) %使狀態重置為s

rand('state', 0) %重置發生器到初始狀態

rand('state', j) %對整數j重置發生器到第j個狀態

rand('state', sum (100*clock)) %每次重置到不同狀態

例.產生一個3×4隨機矩陣

>> R=rand(3,4)

R =

0.9501 0.4860 0.4565 0.4447

0.2311 0.8913 0.0185 0.6154

0.6068 0.7621 0.8214 0.7919

例.產生一個在區間[10, 20]內均勻分布的4階隨機矩陣

>> a=10;b=20;

>> x=a+(b-a)*rand(4)

x =

19.2181 19.3547 10.5789 11.3889

17.3821 19.1690 13.5287 12.0277

11.7627 14.1027 18.1317 11.9872

14.0571 18.9365 10.0986 16.0379

命令 正態分布隨機矩陣

函數 randn

格式 Y = randn(n) %生成n×n正態分布隨機矩陣

Y = randn(m,n)%生成m×n正態分布隨機矩陣

Y = randn([m n]) %生成m×n正態分布隨機矩陣

Y = randn(m,n,p,…) %生成m×n×p×…正態分布隨機矩陣或數組

Y = randn([m n p…])%生成m×n×p×…正態分布隨機矩陣或數組

Y = randn(size(A)) %生成與矩陣A相同大小的正態分布隨機矩陣

randn %無變量輸入時只產生一個正態分布隨機數

s = randn('state') %產生包括正態發生器當前狀態的2個元素的向量

s = randn('state', s) %重置狀態為s

s = randn('state', 0) %重置發生器為初始狀態

s = randn('state', j) %對於整數j重置狀態到第j狀態

s = randn('state', sum(100*clock)) %每次重置到不同狀態

例.產生均值為0.6,方差為0.1的4階矩陣

>> mu=0.6; sigma=0.1;

>> x=mu+sqrt(sigma)*randn(4)

x =

0.8311 0.7799 0.1335 1.0565

0.7827 0.5192 0.5260 0.4890

0.6127 0.4806 0.6375 0.7971

0.8141 0.5064 0.6996 0.8527

命令 產生隨機排列

函數 randperm

格式 p = randperm(n)%產生1~n之間整數的隨機排列

>> randperm(6)

ans =

3 2 1 5 4 6

命令 產生線性等分向量

函數 linspace

格式 y = linspace(a,b)%在(a, b)上產生100個線性等分點

y = linspace(a,b,n)%在(a, b)上產生n個線性等分點

命令 產生對數等分向量

函數 logspace

格式 y = logspace(a,b) %在( )之間產生50個對數等分向量

y = logspace(a,b,n)

y = logspace(a,pi)

命令 計算矩陣中元素個數

n = numel(a)%返回矩陣A的元素的個數

命令 產生以輸入元素為對角線元素的矩陣

函數 blkdiag

格式 out = blkdiag(a,b,c,d,…)%產生以a,b,c,d,…為對角線元素的矩陣

>> out = blkdiag(1,2,3,4)

out =

1 0 0 0

0 2 0 0

0 0 3 0

0 0 0 4

命令 Hankel方陣

函數 hankel

格式 H = hankel(c)%第1列元素為c,反三角以下元素為0。

H =hankel(c,r)%第1列元素為c,最後一行元素為r,如果c的最後一個元素與r的第一個元素不同,交叉位置元素取為c的最後一個元素。

例.

>> c=1:3,r=7:10

c =

1 2 3

r =

7 8 9 10

>> h=hankel(c,r)

h =

1 2 3 8

2 3 8 9

3 8 9 10

命令 Hilbert矩陣

函數 hilb

格式 H = hilb(n)%返回n階Hilbert矩陣,其元素為H(i,j)=1/(i+j-1)。

例.產生一個3階Hilbert矩陣

>> format rat%以有理形式輸出

>> H=hilb(3)

H =

1 1/2 1/3

1/2 1/3 1/4

1/3 1/4 1/5

命令 逆Hilbert矩陣

函數 invhilb

格式 H = invhilb(n)%產生n階逆Hilbert矩陣

命令 Magic(魔方)矩陣

函數 magic

格式 M = magic(n)%產生n 階魔方矩陣

>> M=magic(3)

M =

8 1 6

3 5 7

4 9 2

命令 Pascal矩陣

函數 pascal

格式 A = pascal(n)%產生n階Pascal矩陣,它是對稱、正定矩陣,它的元素由Pascal三角組成,它的逆矩陣的所有元素都是整數。

A = pascal(n,1)%返回由下三角的Cholesky係數組成的Pascal矩陣

A = pascal(n,2)%返回Pascal(n,1)的轉置和交換的形式

>> A=pascal(4)

A =

1 1 1 1

1 2 3 4

1 3 6 10

1 4 10 20

>> A=pascal(3,1)

A =

1 0 0

1 -1 0

1 -2 1

>> A=pascal(3,2)

A =

1 1 1

-2 -1 0

1 0 0

命令 託普利茲矩陣

函數 toeplitz

格式 T = toeplitz(c,r)%生成一個非對稱的託普利茲矩陣,將c作為第1列,將r作為第1 行,其餘元素與左上角相鄰元素相等。

T = toeplitz(r)%用向量r生成一個對稱的託普利茲矩陣

>> c=[1 2 3 4 5];

>> r=[1.5 2.5 3.5 4.5 5.5];

>> T=toeplitz(c,r)

T =

1 5/2 7/2 9/2 11/2

2 1 5/2 7/2 9/2

3 2 1 5/2 7/2

4 3 2 1 5/2

5 4 3 2 1

命令 Wilkinson特徵值測試陣

函數 wilkinson

格式 W = wilkinson(n)%返回n階Wilkinson特徵值測試陣

>> W=wilkinson(4)

W =

3/2 1 0 0

1 1/2 1 0

0 1 1/2 1

0 0 1 3/2

>> W=wilkinson(7)

W =

3 1 0 0 0 0 0

1 2 1 0 0 0 0

0 1 1 1 0 0 0

0 0 1 0 1 0 0

0 0 0 1 1 1 0

0 0 0 0 1 2 1

0 0 0 0 0 1 3

如有問題請聯繫小編,小編QQ:1341723039。或者加入本碩博Matlab工作坊群QQ:178450299。

相關焦點

  • 數學建模第二講—MATLAB的矩陣與數組
    2.2矩陣運算♦矩陣的生成♦向量的生成♦矩陣的元素操作♦矩陣的運算♦矩陣的輸出與載入
  • 1.5 MATLAB矩陣表達之eye函數-單位矩陣應用
    提要接下來給大家介紹一下創建單位矩陣-eye( )函數的使用E=eye
  • matlab矩陣及其運算(五)
    感謝大家對matlab愛好者公眾號的關注!如果公眾號文章對您有幫助,別忘了點擊分享和「在看」哦!
  • MATLAB矩陣及其運算(一)
    1、矩陣的創建matlab矩陣的創建方式有如下幾種:直接輸入、讀取外部數據、內置函數、M文件編程(a) 直接輸入:直接創建矩陣要注意如下規則:矩陣元素必須在方括號[ ]內;矩陣同行元素之間用空格或逗號(,)隔開;矩陣的行與列之間用分號(;)隔開。
  • matlab矩陣及其運算(四)
    大家好,感謝大家對matlab愛好者公眾號的厚愛!
  • MATLAB筆記01:基礎操作與矩陣輸入
    收錄於話題 #matlabcos(8) % 調用內置餘弦函數運算得到-0.1455cos='This string.
  • matlab生成隨機數函數的20多個命令,你知道多少?「肥波貓」
    matlab生成隨機數函數的20多個命令,你知道多少?「肥波貓」rand(n):生成0到1之間的n階隨機數方陣 rand(m,n):生成0到1之間的m×n的隨機數矩陣 (現成的函數)betarnd 貝塔分布的隨機數生成器 binornd 二項分布的隨機數生成器
  • matlab流程控制(二)
    感謝大家關注matlab愛好者公眾號,今天給大家介紹matlab流程控制語句第二部分。
  • Matlab有限元計算
    Logan和《matlab有限元分析與應用》-P.I. Kattan。前者有詳細的剛度矩陣等推導,主要從理論上對有限元方法進行說明,後者主要是結合著名的矩陣實驗室matlab對結構有限元進行分析與計算,兩者可以結合來看。下面我就《有限元方法基礎教程》一書中的習題2.17為例,使用matlab來說明一下如何對其進行計算。
  • matlab官方快速入門----矩陣和數組
    要創建包含多行的矩陣,請使用分號分隔各行。例如,確認矩陣乘以其逆矩陣可返回單位矩陣:p = a*inv(a)p = 3×3    1.0000         0   -0.0000        0    1.0000         0        0         0    1.0000請注意,p
  • MATLAB GUI常見問題解答集
    7、坐標軸標註刻度、網格、文字方向8、Matlab中對uitable的操作:調節各列寬度,設定某列是可編輯的9、將在Matlab下編寫的GUI轉成獨立於Matlab平臺的應用程式10、要將用Matlab語言編寫的函數文件編譯成可獨立執行的*exe文件11、matlab GUI程序轉換成exe可執行文件12、gui生成獨立的應用程式的發布問題
  • 【好玩的源碼】Matlab隨機生成不同顏色的文字
    好玩的matlab帶你學會不一樣的matlab新玩法請今天教大家怎麼用matlab隨機生成不同顏色的文字!'color',rand(1, 3), 'Rotation', 360 * rand); pause(0.1);%動態觀察變化過程延遲0.1秒執行下一條end之前也寫過關於C++版本的OpenCV的隨機生成文字的代碼,感興趣的小夥伴可以訪問下面連結:https://idmatlab.blog.csdn.net/article/details/108691235難點問題:因為
  • matlab入門:變量與賦值,矩陣
    收錄於話題 #matlab例如>> a1=1a1 = 1>> xx='test'xx = 'test'>> 1x=8 1x=8 ↑錯誤: 表達式無效。請檢查缺失的乘法運算符、缺失或不對稱的分隔符或者其他語法錯誤。要構造矩陣,請使用方括號而不是圓括號。
  • MATLAB-矩陣相關計算(2)
    收錄於話題 #matlab12 15 10d = -6 -3 -3 2 5 -2 2 1 8MATLAB除法(左,右)矩陣詳細例子在MATLAB中建立一個腳本文件,代碼如下:a = [ 1 2 3 ; 4 5 6; 7 8 9];b = [ 7 5 6 ; 2 0 8; 5
  • 關於如何在matlab中導入並翻譯Hypemesh導出的大型剛度矩陣txt文本(下)
    在上個部分,我們介紹了如何將Hypemesh導出的大型剛度矩陣快速導入matlab,並保存成data_K.mat文件。
  • MATLAB入門 第二章(更新至2.8)
    (4)可以通過MATLAB所提供的其他函數來生成二維數組。    在創建二維數組的過程中,需要嚴格保證所生成的矩陣的行或列的數目不同。如果兩者的數目,那麼系統將會出現錯誤提示。此外,在直接生成矩陣的過程中,可以通過按回車鍵來保證矩陣生成另一行元素。    多維數組(n維數組),如在三維數組中存在行,列和頁這樣三維,即三維數組中的第三維成為頁。
  • MATLAB矩陣與數組
    >zeros產生一個所有元素為零的矩陣pascal生成PASCAL矩陣diag>產生一個對角矩陣rand隨機產生均勻分布的矩陣ones生成所有元素全為1的矩陣>randn隨機產生正態分布的矩陣eye生成單位矩陣randperm
  • 關於如何在matlab中導入並翻譯Hypemesh導出的大型剛度矩陣txt文本(上)
    剛度矩陣是有限元計算中最重要的矩陣,它是一個典型的對稱稀疏矩陣,並且非零元素全部集中在對角線附近,稀疏矩陣就是零元素遠大於非零元素的數目
  • 對矩陣的簡單操作 | MatLab
    這是之前寫的存貨.有一段歷史了😶----正文----生成矩陣下面是幾種矩陣的生成方法:1、直接輸入
  • 【Matlab】hw3
    比如說,matlab裡面的arrayfun就是一個built-in函數,它的源碼是C語言。這個程序要我們驗證我們輸入的矩陣是不是magic square。這是一個很有趣的矩陣,在matlab裡我們可以通過magic這個函數來獲得這樣的矩陣Example:magic(5)