How to select a row vector with maximum fitness value if few of vectors are restricted to consider?

1 view (last 30 days)
I want to select a row vector ‘NS’ with maximum ‘newResultTF’ value when some of these row vectors are not considered for evaluation which appears in a certain list ‘TM’.
For example, I have a five row vectors under variable ‘NS’
NS(:,:,1) = 6 1 1 1 1
NS(:,:,2) = 5 3 1 1 1
NS(:,:,3) = 5 1 8 1 1
NS(:,:,4) = 5 1 1 3 1
NS(:,:,5) = 5 1 1 1 7
And their fitness values are under variable ‘newResultTF’
newResultTF(:,:,1) = 104
newResultTF(:,:,2) = 101
newResultTF(:,:,3) = 95
newResultTF(:,:,4) = 103
newResultTF(:,:,5) = 89
Restricted row vector are under variable ‘TM’
TM(:,:,1) = 6 1 1 1 1
TM(:,:,2) = 5 1 8 1 1
Now I want to select row vector ‘NS’ with maximum ‘newResultTF’ value except vectors in ‘TM’. For example in this case the selected vector is
NS(:,:,4) = 5 1 1 3 1
With maximum ‘newResultTF’ value
newResultTF(:,:,4) = 103
Please help. Thanks in anticipation!

Accepted Answer

KSSV
KSSV on 10 Mar 2017
NS(:,:,1) = [6 1 1 1 1];
NS(:,:,2) = [5 3 1 1 1];
NS(:,:,3) = [5 1 8 1 1];
NS(:,:,4) = [5 1 1 3 1];
NS(:,:,5) = [5 1 1 1 7];
NS = squeeze(NS)' ;
newResultTF(:,:,1) = 104 ;
newResultTF(:,:,2) = 101 ;
newResultTF(:,:,3) = 95 ;
newResultTF(:,:,4) = 103 ;
newResultTF(:,:,5) = 89 ;
maxdata = squeeze(newResultTF)' ;
[val,id] = sort(maxdata,'descend') ;
TM(:,:,1) = [6 1 1 1 1] ;
TM(:,:,2) = [5 1 8 1 1] ;
TM = squeeze(TM)' ;
for i = 1:length(maxdata)
if ~ismember(NS(id(i),:),TM,'rows')
iwant = NS(id(i),:) ;
break
end
end

More Answers (0)

Categories

Find more on Creating and Concatenating Matrices in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!