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

2024-11-01 05:17:46
推荐回答(5个)
回答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 = zeros(3,4);   % 初始化一个3*4的矩阵

>>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 0 

a(2) = 6;   % 将矩阵a的第2个元素(按列开始计算)赋值为6

>>a = 

0 5 0 0

6 0 0 0

0 0 0 0 

a(3,:) = [1 2 3 4];   % 将矩阵a的第3行赋值为[1 2 3 4]

>>a = 

0 5 0 0

6 0 0 0

1 2 3 4

   

回答2:

用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里面很多东西都不需要循环来完成,速度快而且语句简单

回答3:

比如:
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

回答4:

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

回答5:

用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里面很多东西都不需要循环来完成,速度快而且语句简单