Если у меня есть struct
в Matlab с несколькими полями, определенными с одним и тем же объектом, будет ли он рассматриваться как один объект в памяти или воссоздан для каждого поля? Другими словами, я хотел бы иметь несколько имен полей для одного объекта, возможно ли это в Matlab?
Например,
function output = fn(input)
output = struct('field1',input,'field2',input)
end
Будет ли output
содержать две копии input
или одну?
1 ответ
Недавно я нашел способ найти ответ. В командную строку Matlab можно ввести следующее.
A=magic(3);
S=struct('field1',A,'field2',A);
format debug
S.field1
S.field2
Выход для меня был
>> S.field1
ans =
Structure address = 369610c0
m = 3
n = 3
pr = 3fb54e40
pi = 0
8 1 6
3 5 7
4 9 2
>> S.field2
ans =
Structure address = 369610c0
m = 3
n = 3
pr = 3fb54e40
pi = 0
8 1 6
3 5 7
4 9 2
Обратите внимание, что значения pr
одинаковы для обоих полей.
Я думаю, что pr
- это указатель на действительную часть матрицы. Таким образом, поскольку оба поля имеют один и тот же указатель, нет дублирования одного и того же объекта.
Похожие вопросы
Новые вопросы
matlab
MATLAB - это высокоуровневая языковая и интерактивная среда программирования для численных расчетов и визуализации, разработанная MathWorks. Не используйте оба тега [matlab] и [octave], если явно не задан вопрос о сходстве или различии между ними. При использовании этого тега, пожалуйста, укажите версию MATLAB, с которой вы работаете (например, R2017a).
struct
.