Can I store and call functions from within a struct?

조회 수: 36 (최근 30일)
Julian
Julian 2018년 9월 3일
댓글: Hank 2019년 5월 1일
Hi everyone,
i want to create a struct with the following fields: analysis(i).type (this is a list of different types of possible analysis) analysis(i).function (this should contain the specific function that should be executed, if a specific type of analysis was chosen)
I've tried some things so far, but nothing worked...so i'm wondering if this is even possible?
Thank you!

채택된 답변

Stephan
Stephan 2018년 9월 3일
편집: Stephan 2018년 9월 3일
Hi,
you can store function handles in a struct and use them like this:
fun1 = @(x,y) x + y
fun2 = @(x,y) x - y
analysis.add = fun1
analysis.subtract = fun2
res1 = analysis.add(1,2)
res2 = analysis.subtract(5,3)
Best regards
Stephan
  댓글 수: 4
Guillaume
Guillaume 2018년 9월 3일
And if the function to execute is a m file (as opposed to anonnymous functions in Stephan and Stephen's example), then:
%store function handle to m file myfunc.m:
analysis.add = @myfunc
Julian
Julian 2018년 9월 3일
Thank you guys :)

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

Hank
Hank 2019년 5월 1일
편집: Hank 2019년 5월 1일
To further this question, I would like to use fields of the struct as parameters in the functions, hopefully without having to write an entire class for this purpose.
for example
circ = struct('Radius', 3 ,...
'Area', @() pi*Radius^2 );
where 'radius' in the anon function somehow references circ.Radius
Then, radius may be change by other programs or the user action but whenever I access circ.Area, it references the current radius.
Cheers, Henry
  댓글 수: 4
Guillaume
Guillaume 2019년 5월 1일
You can link to this question in your own. We can't answer an Answer, only comment on it. You can't accept a comment as resolving a question asked in an answer.
Hank
Hank 2019년 5월 1일
Fair enough. I think I've resolved that this can only be acheived by creating a class for the object i'm interested. There's no support of methods for a struct.

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Function Creation에 대해 자세히 알아보기

제품


릴리스

R2018a

Community Treasure Hunt

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

Start Hunting!

Translated by