7

我对 Matlab 不是很熟悉,所以提前为这个愚蠢的问题道歉。我想将数字 1 分配给矩阵的某些特定位置。我有一个行向量和相应的列向量。我多次尝试为这些位置分配值。但是,它没有用。这是一个较小尺寸的代码示例。假设有一个 4*4 矩阵,我想将矩阵(1,1)、矩阵(2,3)和矩阵(3,4)分配给 1。这就是我所做的。

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 的行向量和列向量?非常感谢你,

4

3 回答 3

10

您可以使用sub2ind计算要分配的位置的线性索引并将其用于分配:

indices = sub2ind(size(matrix), row, col);
matrix(indices) = 1;
于 2013-04-08T06:00:41.550 回答
1
matrix(1,1) = 1
matrix(2,3) = 1
matrix(3,4) = 1
于 2013-04-08T05:51:43.723 回答
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}
于 2014-12-12T19:41:47.560 回答