2014-08-29 72 views
0

創造了一些規範的新的矩陣我有一個矩陣是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中執行此操作?

+1

你在找什麼是可能的。但詳細解釋你的輸入是什麼以及你想得到什麼。輸入和輸出的例子會更好地解釋。 – codePG 2014-08-29 04:37:09

+1

11 * 2矩陣和新的7 * 5矩陣是如何相關的?什麼和爲什麼? – pablo1977 2014-08-29 04:37:14

回答

4

這很容易使用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 
+0

非常感謝我的朋友,我真的需要更努力學習 – 2014-08-29 04:56:49

+0

@PepeLópez - 一點問題都沒有。我在這裏回答問題..特別是關於MATLAB :) – rayryeng 2014-08-29 04:57:24

+1

+1非常完整的答案 – 2014-08-29 10:58:38