[英]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.