作业帮 > 综合 > 作业

请问Matlab如何给符合某条件的元素批量赋值?

来源:学生作业帮 编辑:搜搜做题作业网作业帮 分类:综合作业 时间:2024/06/23 04:06:30
请问Matlab如何给符合某条件的元素批量赋值?
比如一个矩阵mxnx4的矩阵A,在A(:,:,1)中的元素为1时,A中第3维相应第2、3个元素分别赋予某值(如100,101),A(:,:,1)中的元素为2时,A中第3维相应第2、3个元素分别赋予某值.,除了通过循环遍历A(:,:,1)中各元素判断并赋值,请问还有什么更好的方法?
请问Matlab如何给符合某条件的元素批量赋值?
是不是要达到类似于下面的效果?A=round(rand(2,3,4)*2)
rc1 = A(:,:,1)==1
rc2 = A(:,:,1)==2
RC1=logical(zeros(size(A)));
RC2=logical(zeros(size(A)));
RC1(:,:,2:3)=cat(3,rc1,rc1);
RC2(:,:,2:3)=cat(3,rc2,rc2);
A(RC1)=10
A(RC2)=20在这里例子中,A(i,j,1)=1时,A(i,j,2:3)赋值为10;A(i,j,1)=2时,A(i,j,2:3)赋值为20. 一组测试实例(数据随机产生):>> A=round(rand(2,3,4)*2)
A(:,:,1) =
     1     2     2
     1     0     2

A(:,:,2) =
     2     1     0
     2     1     1

A(:,:,3) =
     1     1     1
     2     1     1

A(:,:,4) =
     1     1     2
     2     0     1
>> rc1 = A(:,:,1)==1
rc1 =
     1     0     0
     1     0     0
>> rc2 = A(:,:,1)==2
rc2 =
     0     1     1
     0     0     1
>> RC1=logical(zeros(size(A)));
>> RC2=logical(zeros(size(A)));
>> RC1(:,:,2:3)=cat(3,rc1,rc1);
>> RC1
RC1(:,:,1) =
     0     0     0
     0     0     0

RC1(:,:,2) =
     1     0     0
     1     0     0

RC1(:,:,3) =
     1     0     0
     1     0     0

RC1(:,:,4) =
     0     0     0
     0     0     0
>> RC2(:,:,2:3)=cat(3,rc2,rc2);
>> RC2
RC2(:,:,1) =
     0     0     0
     0     0     0

RC2(:,:,2) =
     0     1     1
     0     0     1

RC2(:,:,3) =
     0     1     1
     0     0     1

RC2(:,:,4) =
     0     0     0
     0     0     0
>> A(RC1)=10
A(:,:,1) =
     1     2     2
     1     0     2

A(:,:,2) =
    10     1     0
    10     1     1

A(:,:,3) =
    10     1     1
    10     1     1

A(:,:,4) =
     1     1     2
     2     0     1
>> A(RC2)=20
A(:,:,1) =
     1     2     2
     1     0     2

A(:,:,2) =
    10    20    20
    10     1    20

A(:,:,3) =
    10    20    20
    10     1    20

A(:,:,4) =
     1     1     2
     2     0     1