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

1 view (last 30 days)
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

Accepted Answer

Adam Danz
Adam Danz on 8 Apr 2019
Edited: Adam Danz on 8 Apr 2019
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
mina massoud
mina massoud on 9 Apr 2019
%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
mina massoud
mina massoud on 9 Apr 2019
% 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.

More Answers (0)

Tags

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!