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