matlab中如何给一个矩阵中的某几个特定位置赋值

来源:百度知道 编辑:UC知道 时间:2024/05/10 05:43:13
比如说我有一个矩阵:a = zeros(5);
还有两列向量:i = [2;3;4]; j = [1;4;2];
想使得a(i(k),j(k))=1,也就是说让a的第2行第1列、第3行第4列、第4行第2列这三个位置上的元素等于1。
不用循环,也不通过转稀疏矩阵,最好只用一条语句来实现。

用sub2ind

>> a=zeros(5); i = [2;3;4]; j = [1;4;2];
>> a(sub2ind(size(a), i, j))=1

a =

0 0 0 0 0
1 0 0 0 0
0 0 0 1 0
0 1 0 0 0
0 0 0 0 0

hokvens: 这个正是matlab的精髓,matlab里面很多东西都不需要循环来完成,速度快而且语句简单

比如:
k1=[1,2;3,4];
K=zeros(4);
把k1的值赋在K的特定位置后,获得
K=[0,1,0,2;
0,0,0,0;
0,3,0,4;
0,0,0,0;]

K([1 3],[2 4]) = k1

mark一下,等答案

直接赋值不行吗?
a(2,1)=1;a(3,4)=1;a(4,2)=1;

a(size(a,1)*(j-1)+i)=1