比如说我有一个矩阵: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
注意事项
MATLAB书写表达式的规则与“手写算式”差不多相同。
如果一个指令过长可以在结尾加上...(代表此行指 令与下一行连续),例如
?3*...
6
ans =
18
在matlab中,可通过如下方式给矩阵赋值:
>>a =
0 0 0 0
0 0 0 0
0 0 0 0
a(1,2) = 5; % 将矩阵a的第1行第2列个元素赋值为5>>a =
0 5 0 0
0 0 0 0
0 0 0 0a(2) = 6; % 将矩阵a的第2个元素(按列开始计算)赋值为6
>>a =
0 5 0 0
6 0 0 0
0 0 0 0a(3,:) = [1 2 3 4]; % 将矩阵a的第3行赋值为[1 2 3 4]
>>a =
0 5 0 0
6 0 0 0
1 2 3 4