簡體   English   中英

MATLAB用零擴展矩陣

[英]MATLAB Expanding A Matrix with Zeros

我需要一個nxn矩陣,其中第一個pxp包含1,其余為0。 我可以通過遍歷細胞來做到這一點,所以我不是想辦法去做。 我正在尋找“ MATLAB方式”,使用內置函數和避免循環等。

更清楚;

n=4 and p=2

然后預期的結果是:

1 1 0 0
1 1 0 0
0 0 0 0
0 0 0 0

可能有不止一個優雅的解決方案,所以我會接受最短和最可讀的答案。

PS問題標題看起來有點無關緊要:我把這個標題pxp ,因為我的初始方法是創建一個帶有1的pxp矩陣,然后用零將其擴展為nxn

答案是創建一個零矩陣,然后使用索引將其中一部分設置為1

例如:

n = 4;
p = 2;
x = zeros(n,n);
x(1:p,1:p) = 1;

如果您堅持擴展,可以使用:

padarray( zeros(p,p)+1 , [n-p n-p], 0, 'post')

擴展矩陣的另一種方法:

>> p = 2; n = 4;
>> M = ones(p,p)
M =
     1     1
     1     1
>> M(n,n) = 0
M =
     1     1     0     0
     1     1     0     0
     0     0     0     0
     0     0     0     0

您可以通過水平和垂直連接來輕松創建矩陣:

n = 4;
p = 2;
MyMatrix = [ ones(p), zeros(p, n-p); zeros(n-p, n) ];
>> p = 2; n = 4;
>> a = [ones(p, 1); zeros(n - p, 1)]

a =

     1
     1
     0
     0

>> A = a * a'

A =

     1     1     0     0
     1     1     0     0
     0     0     0     0
     0     0     0     0

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM