用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
用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
直接赋值不行吗?
a(2,1)=1;a(3,4)=1;a(4,2)=1;
用sub2ind
>>a=zeros(5);i=[2;3;4];j=[1;4;2];
>>a(sub2ind(size(a),i,j))=1
a=
00000
10000
00010
01000
00000
hokvens:这个正是matlab的精髓,matlab里面很多东西都不需要循环来完成,速度快而且语句简单