如何在MATLAB中为矩阵的特定位置赋值?

时间:2013-04-08 05:49:49

标签: matlab matrix variable-assignment

我对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?非常感谢,

3 个答案:

答案 0 :(得分:10)

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

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

答案 1 :(得分:1)

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

答案 2 :(得分: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}