如何在 MATLAB 中为矩阵的特定位置赋值?
Posted
技术标签:
【中文标题】如何在 MATLAB 中为矩阵的特定位置赋值?【英文标题】:How to assign a value to specific locations of a matrix in MATLAB? 【发布时间】:2013-04-08 05:49:48 【问题描述】:我对 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 的行向量和列向量?非常感谢,
【问题讨论】:
可能有用:***.com/questions/6850368/… 非常感谢。我检查了帖子,它非常有帮助。 【参考方案1】:您可以使用sub2ind
计算您要分配的位置的线性索引并将其用于分配:
indices = sub2ind(size(matrix), row, col);
matrix(indices) = 1;
【讨论】:
【参考方案2】:matrix(1,1) = 1
matrix(2,3) = 1
matrix(3,4) = 1
【讨论】:
非常感谢您的回复。但是,我的矩阵的实际大小是数千。我不能一一分配。那么无论如何要使用我拥有的行向量和列向量吗?谢谢【参考方案3】:有点颠簸。除非你做很多不连续的行或列,否则一个非常有用的方法就像
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
【讨论】:
以上是关于如何在 MATLAB 中为矩阵的特定位置赋值?的主要内容,如果未能解决你的问题,请参考以下文章
matlab怎样给第一个矩阵1号位置赋值,第二个矩阵2号位置赋值?