I have problem writing a matlab function

조회 수: 7 (최근 30일)
Cantor Set
Cantor Set 2019년 10월 19일
답변: Image Analyst 2019년 10월 19일
I want to write this function in matrix form.
The function is
I defined the vector as:
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

답변 (3개)

the cyclist
the cyclist 2019년 10월 19일
편집: the cyclist 2019년 10월 19일
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.

Sedi Ghan
Sedi Ghan 2019년 10월 19일
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.

Image Analyst
Image Analyst 2019년 10월 19일
Make sure x1 and x2 are column vectors (Nx1), NOT row vectors (1xN).

카테고리

Help CenterFile Exchange에서 Matrix Indexing에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by