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

如何在MATLAB中为矩阵的特定位置赋值?,matlab,matrix,variable-assignment,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

我不太熟悉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的行向量和列向量?非常感谢,

您可以使用
sub2ind
计算您要分配到的职位的线性指数,并将其用于分配:

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

有点颠簸。除非您要处理很多不连续的行或列,否则非常有用的方法如下

matrix(1:3,2:4)=1
它很容易支持元素数学

这会变成

{0 0 0 0}
{0 0 0 0}
{0 0 0 0}
{0 0 0 0}
进入


非常感谢您的回复。然而,我的矩阵的实际大小是以千为单位的。我不能一一分配。那么,是否仍然可以使用我的行向量和列向量呢?ThanksIt可能很有用:非常感谢。我查看了这篇文章,它非常有用。
{0 1 1 1}
{0 1 1 1}
{0 1 1 1}
{0 0 0 0}