MATLAB Repmat

Ammar Ali 2022年6月7日
MATLAB Repmat

本教程將討論使用 MATLAB 中的 repmat() 函式建立具有陣列重複值的矩陣。

MATLAB repmat() 函式

repmat() 函式從一個小陣列建立大矩陣。該函式重複陣列的給定值以建立大矩陣。

repmat() 函式具有三種基本語法。第一種語法如下。

M = repmat(A,n);

上面的語法返回一個陣列,其中包含 A 在行和列維度上的 n 個副本。當 A 是矩陣時,輸出矩陣 M 將等於矩陣 A 的大小乘以 n,大於 A 的大小。

repmat() 函式的第一個引數是輸入陣列,可以是標量、矩陣、向量或多維陣列。第二個引數將設定輸入陣列在行和列維度上重複的次數。

repmat() 函式的第二種語法如下。

M = repmat(A,r1,...,rN);

上面的語法返回一個標量列表,描述每個維度中 A 的副本的排列。當 A 是具有 N 維的矩陣時,M 的大小大於 A 的大小。

r1 將定義輸入陣列在第一個維度上重複的次數。repmat() 函式的第三種語法如下所示。

M = repmat(A,r);

上面的語法根據行向量 r 的重複方案返回一個包含行和列維度中 A 副本的陣列。

例如,我們可以使用向量 r 定義給定陣列或矩陣在行和列維度上重複的次數,該向量將包含輸入陣列或矩陣將被重複以建立輸出的次數矩陣。

我們可以使用 repmat() 函式通過重複單個值來建立矩陣。例如,讓我們建立一個包含值 5 的 2×2 矩陣。

請參閱下面的程式碼。

clc
clear

M = repmat(5,2,2)

輸出:

M =

     5     5
     5     5

clcclear 命令用於清除上述程式碼中的命令和工作區視窗。輸出是一個僅包含數字 5 的 2×2 矩陣。

我們還可以使用 repmat() 函式從另一個矩陣的重複中建立一個矩陣。例如,讓我們使用 diag() 函式建立一個對角矩陣,然後通過重複對角矩陣建立一個矩陣。

請參閱下面的程式碼。

clc
clear

D = diag([5 15 25])
M = repmat(D,2,3)

輸出:

D =

     5     0     0
     0    15     0
     0     0    25


M =

     5     0     0     5     0     0     5     0     0
     0    15     0     0    15     0     0    15     0
     0     0    25     0     0    25     0     0    25
     5     0     0     5     0     0     5     0     0
     0    15     0     0    15     0     0    15     0
     0     0    25     0     0    25     0     0    25

在上面的程式碼中,我們在行維度上重複了 2 次對角矩陣,在列維度上重複了 3 次。

輸出矩陣的大小將變為 6×9,因為輸入有 3 行,我們重複了 2 次,輸出行大小將變為 6,輸入矩陣有 3 列,我們重複了 3 次這樣輸出列大小將變為 9。

我們還可以使用 repmat() 函式製作 3D 矩陣。我們必須在重複方案中使用三個值。

例如,讓我們使用 repmat() 函式建立一個 6×3×2 矩陣。請參閱下面的程式碼。

clc
clear

D = diag([5 15 25])
M = repmat(D,2,1,2)

輸出:

D =

     5     0     0
     0    15     0
     0     0    25


M(:,:,1) =

     5     0     0
     0    15     0
     0     0    25
     5     0     0
     0    15     0
     0     0    25


M(:,:,2) =

     5     0     0
     0    15     0
     0     0    25
     5     0     0
     0    15     0
     0     0    25

我們可以看到,輸出矩陣是一個 3 維矩陣。我們還可以建立一個包含水平或垂直行向量堆疊的矩陣。

例如,如果我們不想在某個維度上重複向量,我們可以在其位置傳遞 1。在 repmat() 函式中,第二個引數定義了第一個或行維度的重複方案。

第三個引數定義第二個或列維度的重複方案。

例如,讓我們建立一個帶有行向量水平堆疊的矩陣。請參閱下面的程式碼。

clc
clear

D = (1:5)'
M = repmat(D,1,5)

輸出:

D =

     1
     2
     3
     4
     5


M =

     1     1     1     1     1
     2     2     2     2     2
     3     3     3     3     3
     4     4     4     4     4
     5     5     5     5     5

在上面的程式碼中,我們對給定向量進行了轉置,將其轉​​換為列向量以建立水平堆疊,但在垂直堆疊的情況下,我們不必對給定向量進行轉置。

我們還可以使用 repmat() 函式從一個小表建立一個大表。例如,讓我們使用 table() 函式建立一個表,並從第一個表建立另一個大表。

請參閱下面的程式碼。

clc
clear

T_1 = table([19; 16],[60; 53],'VariableNames',{'Age' 'Height'})
T_2 = repmat(T_1, 2,2)

輸出:

T_1 =

  2×2 table

    Age    Height
    ___    ______

    19       60
    16       53


T_2 =

  4×4 table

    Age    Height    Age_1    Height_1
    ___    ______    _____    ________

    19       60       19         60
    16       53       16         53
    19       60       19         60
    16       53       16         53

在上面的程式碼中,我們將行和列維度重複了 2 次以建立更大的表。

作者: Ammar Ali
Ammar Ali avatar Ammar Ali avatar

Hello! I am Ammar Ali, a programmer here to learn from experience, people, and docs, and create interesting and useful programming content. I mostly create content about Python, Matlab, and Microcontrollers like Arduino and PIC.

LinkedIn Facebook

相關文章 - MATLAB Matrix