MATLAB Answers

0

hi everyone , i need help to do this , thank u

Asked by mina massoud on 8 Apr 2019
Latest activity Commented on by mina massoud on 9 Apr 2019
clear all
clc
A=10*randn(1,8);
B=10*randn(1,8);
EA=A+2
EB=B+2
E=min(EA,EB)
% i need the value of A and B in a row vector that corrispond to the value of E
thank u

  0 Comments

Sign in to comment.

Tags

1 Answer

Answer by Adam Danz
on 8 Apr 2019
Edited by Adam Danz
on 8 Apr 2019
 Accepted Answer

The variable 'idx' tells you whether the minimum came from EA (idx=1) or EB (idx=2). Use that to pull out values from A and B as needed.
[E, idx] = min([EA;EB]); %only works if EA and EB are same size
% If you want one row vector of A and one for B
A0 = A(idx==1);
B0 = B(idx==2);
% If you want one row vector that combines A and B
AB = nan(1, length(E));
AB(idx==1) = A(idx==1);
AB(idx==2) = B(idx==2);

  13 Comments

This works
A=10*randn(2,8);
B=10*randn(2,8);
MA=mean(A,1);
MB=mean(B,1);
[E, idx] = min([MA;MB]);
AB = nan(1, length(E));
AB(idx==1) = A(idx==1 );
AB(idx==2) = B(idx==2);
I haven't read through your code but if there's a specific part that you're having trouble implementing, share that part of the code and format it the same way I format the code so it's readable.
%this is the part of the code that doesn't work
for i=1:300
for j=1:100
A{i,j}=10*randn(2,8);
B{i,j}=10*randn(2,8);
MA{i,j}=mean(A{i,j},1);
MB{i,j}=mean(B{i,j},1);
[E{i,j}, idx{i,j}] = min([MA{i,j};MB{i,j}]);
AB{i,j} = nan(2, length(E{i,j}));
AB{i,j}(idx==1) = A{i,j}(idx==1 );
AB{i,j}(idx==2) = B{i,j}(idx==2);
end
end
% thank you adam
% i tried also this , but still not working
for i=1:300
for j=1:100
A{i,j}=10*randn(2,8);
B{i,j}=10*randn(2,8);
MA=mean(A{i,j},1);
MB=mean(B{i,j},1);
[E, idx] = min([MA;MB]);
AB = nan(2, length(E));
AB(idx==1) = A(:,idx==1);
AA{i,j}=AB
AB(idx==2) = B(:,idx==2);
AA{i,j}=AB
end
end

Sign in to comment.