How do I pass by reference, a structure to a function (an .m file) in an argument list?

4 views (last 30 days)
I am calling an .m file function which as format: "function[] = myFunctionName(structA,structB)" in top line, followed by lines of code and completed with an end statement. I am sendiing the function very large data entities,...huge arrays for example. And I want to edit (change values) these arrays in the function. So when I call this function in the body of the program, myFunctionName(hugeStructure) I suspect hugeStructure will be sent as a copy (value) which will take a lot of memory and not change the value in the calling routine. If hugeStructure is sent by reference (ie a pointer), then only the structure address will be sent which cuts way down on overhead and memory in addition to allowing me to change the structure in the calling routine. Q1: is there a way I can force hugeStructure be sent via reference? Q2: If hugeStructure is in both the input list and output list, will it be sent by reference?
Function main:
function[] = main()
inStruct.Val1 = 5;
inStruct.Val2 = 105;
inStruct.Val3 = 505;
aaa = 5;
Calls function simplemath2:
function[] = simpleMath(hugeStructure)
hugeStructure.Val1 = hugeStructure.Val1 + 50;
hugeStructure.Val2 = hugeStructure.Val2 + 50;
hugeStructure.Val3 = hugeStructure.Val3 + 50;
The values in function main do not change after calling simplemath2.

Accepted Answer

Sean de Wolski
Sean de Wolski on 3 May 2022
Author a simple handle class that has the structure as a property
classdef referenceStruct < handle
S struct
Now use this.
rs = referenceStruct;
rs.S.Var1 = pi;

More Answers (0)


Find more on Structures 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!

Translated by