I have problem writing a matlab function
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
I want to write this function in matrix form.
The function is ![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/243562/image.png)
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/243562/image.png)
I defined the vector as: ![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/243563/image.png)
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/243563/image.png)
Then what is wrong with my code?
function [ ObjVall ] = objfun2( phen)
%UNTITLED Summary of this function goes here
% Detailed explanation goes here
x=(5/pi)*phen(1:end,1)-6;
y=phen(1:end,2) - (5.1/(4*pi^2)).*(phen(1:end,1).^2 +x);
z=10*(1 - (1/(8*pi))*cos(phen(1:end,1)));
ObjVall=(y).^2 + z +10;
end
0 Kommentare
Antworten (3)
the cyclist
am 19 Okt. 2019
Bearbeitet: the cyclist
am 19 Okt. 2019
The coefficient
(5.1/(4*pi^2))
is multiplying the term you have called x, which is not correct.
It might have been easier to debug if you define
x1 = phen(:,1);
x2 = phen(:,2);
inside your function, which will make your MATLAB expression look more like the math equation.
0 Kommentare
Sedi Ghan
am 19 Okt. 2019
I don't know where is wrong in your code. However, I write your formula as follows and it works.
function [ ObjVall ] = objfun2( phen)
%UNTITLED Summary of this function goes here
% Detailed explanation goes here
ObjVall= (phen(:,2) - (5.1/(4*pi^2))*phen(:,1).^2 + (5/pi)*phen(:,1)-6 ).^2+...
+10*(1-(1/8*pi)*cos(phen(:,1))) + 10;
end
When phen is an N by 2 matrix, the output is an N by 1 array.
0 Kommentare
Image Analyst
am 19 Okt. 2019
Make sure x1 and x2 are column vectors (Nx1), NOT row vectors (1xN).
0 Kommentare
Siehe auch
Kategorien
Mehr zu MATLAB Compiler finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!