創造了一些規範的新的矩陣我有一個矩陣是11×2尺寸:難度在MATLAB
M =
1 1
2 1
3 1
4 1
1 2
2 2
3 2
4 2
5 2
4 3
5 3
我想創建一個新的矩陣是尺寸7×5,這個矩陣的應該以這樣的方式填充,其中M
的每一行表示我希望將這個新矩陣設置爲1的位置。具體地,位置(1,1)結果必須是1,下一個位置(2,1)是1直到最後一個位置(5,3)爲1。
如何在MATLAB中執行此操作?
創造了一些規範的新的矩陣我有一個矩陣是11×2尺寸:難度在MATLAB
M =
1 1
2 1
3 1
4 1
1 2
2 2
3 2
4 2
5 2
4 3
5 3
我想創建一個新的矩陣是尺寸7×5,這個矩陣的應該以這樣的方式填充,其中M
的每一行表示我希望將這個新矩陣設置爲1的位置。具體地,位置(1,1)結果必須是1,下一個位置(2,1)是1直到最後一個位置(5,3)爲1。
如何在MATLAB中執行此操作?
這很容易使用sub2ind
來實現。您可以將行和列位置轉換爲單個線性索引,然後使用它並將1
分配給輸出矩陣的每個位置。我將假設其他位置爲零(0
)。換句話說,做這個假設A
是你所定義的7 x 5
輸出矩陣,並在你的問題定義的矩陣M
(在11 x 2
矩陣):
ind = sub2ind([7 5], M(:,1), M(:,2));
A = zeros(7, 5);
A(ind) = 1;
A
是這樣的:
A =
1 1 0 0 0
1 1 0 0 0
1 1 0 0 0
1 1 1 0 0
0 1 1 0 0
0 0 0 0 0
0 0 0 0 0
或者,您可以使用sparse
並將您在問題中定義的矩陣元素用作元素來創建非零條目,其餘爲零。在我們的例子中,我們將把由M
的值定義的這個稀疏矩陣的每個位置設置爲1
。然後我們使用full
將矩陣轉換回適當的形式。因此:
Asparse = sparse(M(:,1), M(:,2), 1, 7, 5);
A = full(Asparse);
我們得到了我們所期望的一樣,我們在我們的第一個方法看到:
A =
1 1 0 0 0
1 1 0 0 0
1 1 0 0 0
1 1 1 0 0
0 1 1 0 0
0 0 0 0 0
0 0 0 0 0
非常感謝我的朋友,我真的需要更努力學習 – 2014-08-29 04:56:49
@PepeLópez - 一點問題都沒有。我在這裏回答問題..特別是關於MATLAB :) – rayryeng 2014-08-29 04:57:24
+1非常完整的答案 – 2014-08-29 10:58:38
你在找什麼是可能的。但詳細解釋你的輸入是什麼以及你想得到什麼。輸入和輸出的例子會更好地解釋。 – codePG 2014-08-29 04:37:09
11 * 2矩陣和新的7 * 5矩陣是如何相關的?什麼和爲什麼? – pablo1977 2014-08-29 04:37:14