如何在 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对矩阵的特定位置赋值?

matlab怎样给第一个矩阵1号位置赋值,第二个矩阵2号位置赋值?

matlab数组中如何找某个值的坐标

matlab数组中如何找某个值的坐标

在 Matlab 中,如何从曲线画线到特定的 xaxis 位置?

Matlab提取excel表格特定地方数据