Hello sir;
i am trying to find minimum of a function by putting more than one vectors in a single step to get a constant cost value.
bk=magic(4)=[16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1]
function=bk1'*H1'*H1*bk1-2*yr'*H1*bk1;
where yr is a column vector, H1 is a square matrix and bk1 is a column of bk.
i want to put each vector of bk in above function and select the minimum value in a single command.
i tried this one but it doesn't works.
[cost_value, indx]=min(abs(bk(:,[1:end])'*H1'*H1*bk(:,[1:end])-2*yr'*H1*bk(:,[1:end])));
please help

3 Comments

John D'Errico
John D'Errico on 6 Mar 2016
Edited: John D'Errico on 6 Mar 2016
As you wrote it, that is not a function. It is an expression. Also, you cannot use the name "function" for a variable name.
If you are trying to find a minimum of a function, use an optimizer. Min is not an optimizer. Tools like fminsearch, fminunc, fmincon are optimzers.
thnx for reply how but can i implement this to get the minimum value as well the index of the vector which gives the minimun value
actually i want to find the column of bk which gives minimum value for the expression

Sign in to comment.

 Accepted Answer

What is bk1 and H?
Anyway, why not just assign it to a numerical array and use min:
f =bk1'*H1'*H1*bk1-2*yr'*H1*bk1
[minFValue, linearIndexAtMinFValue] = min(f(:));
or
[rowAtMin, colAtMin] = find(f == min(f(:)))

2 Comments

Arif Ullah khan
Arif Ullah khan on 6 Mar 2016
Edited: Arif Ullah khan on 6 Mar 2016
bk1 is each column of bk matrix while H1 is a square matrix actually i want to find the column of bk which gives minimum value for the expression
Yep, my code will do it.

Sign in to comment.

More Answers (0)

Categories

Community Treasure Hunt

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

Start Hunting!