2013-04-08 335 views
6

我對Matlab不太熟悉,所以提前對這個愚蠢的問題表示歉意。我想將數字1指定給矩陣的某些特定位置。我有一個行向量和相應的列向量。我試圖給這些位置分配數次數次。但是,它沒有工作。這是一個更小的代碼示例。假設有一個4 * 4矩陣,我想將矩陣(1,1),矩陣(2,3)和矩陣(3,4)分配給1。這就是我所做的。如何在MATLAB中爲矩陣的特定位置賦值?

matrix = zeros(4,4); 
row = [1 2 3]; 
col = [1 3 4]; 
matrix(row,col)=1; 

但是,我得到的答案

matrix=[ 1 0 1 1 
     1 0 1 1 
     1 0 1 1 
     0 0 0 0]  

有人能說出什麼我錯在這裏做什麼?我將要處理的矩陣的實際大小在幾千個,所以這就是爲什麼我不能一個接一個地手動分配這些位置的原因。有什麼辦法可以使用行向量和列向量我必須分配值1?非常感謝你,

+2

它可能是有用的:http://stackoverflow.com/questions/6850368/how-can-i-change-the-values-of-multiple-points-in-a-matri x?rq = 1 – 2013-04-08 05:59:10

+0

非常感謝。我檢查了這篇文章,它非常有幫助。 – Cassie 2013-04-08 06:06:57

回答

8

您可以使用sub2ind來計算要分配到並使用這些分配的位置的線性指標:

indices = sub2ind(size(matrix), row, col); 
matrix(indices) = 1; 
+0

非常感謝。有效 ! – Cassie 2013-04-08 06:06:18

1
matrix(1,1) = 1 
matrix(2,3) = 1 
matrix(3,4) = 1 
+2

非常感謝您的回覆。但是,我的矩陣的實際大小是數千。我無法一一分配。那麼無論如何要使用我有的行向量和列向量?謝謝 – Cassie 2013-04-08 05:53:36

1

爲突起位。除非你是做相當多的不連續的行或列,一個非常有用的方式是像

matrix(1:3,2:4)=1 

它支持很容易

元素數學這會變成

{0 0 0 0} 
{0 0 0 0} 
{0 0 0 0} 
{0 0 0 0} 

{0 1 1 1} 
{0 1 1 1} 
{0 1 1 1} 
{0 0 0 0}