Does struct manipulation work in place when using arrayfun on an array of structs?
I would like to better understand how arrays of structured data are handled when they are manipulated using arrayfun. I’ve created a minimal example below to show the kind of situation I’m looking at. In this example, I’m applying a function to each struct in an array of structs using arrayfun to manipulate the structures by adding an additional field. Does this code work "in place" on the structs in the array, only allocating new memory for the new field? If this will copy the structures (or the entire array) as the fields are added, then it seems better to use a loop than arrayfun. I’d appreciate any insight into how the memory is managed during this kind of operation.
s = struct("x", {1, 2, 3});
s = arrayfun(@update, s);
function s = update(s)
s.y = s.x^2;
endI would like to better understand how arrays of structured data are handled when they are manipulated using arrayfun. I’ve created a minimal example below to show the kind of situation I’m looking at. In this example, I’m applying a function to each struct in an array of structs using arrayfun to manipulate the structures by adding an additional field. Does this code work "in place" on the structs in the array, only allocating new memory for the new field? If this will copy the structures (or the entire array) as the fields are added, then it seems better to use a loop than arrayfun. I’d appreciate any insight into how the memory is managed during this kind of operation.
s = struct("x", {1, 2, 3});
s = arrayfun(@update, s);
function s = update(s)
s.y = s.x^2;
end I would like to better understand how arrays of structured data are handled when they are manipulated using arrayfun. I’ve created a minimal example below to show the kind of situation I’m looking at. In this example, I’m applying a function to each struct in an array of structs using arrayfun to manipulate the structures by adding an additional field. Does this code work "in place" on the structs in the array, only allocating new memory for the new field? If this will copy the structures (or the entire array) as the fields are added, then it seems better to use a loop than arrayfun. I’d appreciate any insight into how the memory is managed during this kind of operation.
s = struct("x", {1, 2, 3});
s = arrayfun(@update, s);
function s = update(s)
s.y = s.x^2;
end struct, arrayfun, struct arrays, memory, speed, performance MATLAB Answers — New Questions