Итак, у меня есть массив ячеек векторов X:
octave:149> X
X =
{
[1,1] =
1 17 20
[2,1] =
5 20 22 27
[3,1] =
2 17 18 21
}
Я создаю пустой вектор Y:
octave:150> Y = []
Y = [](0x0)
Затем я вызываю анонимную функцию для каждого значения X с «Y = уникальным ([Y x])»:
octave:151> cellfun(@(x)(Y = unique([Y x])),X,'UniformOutput',false)
ans =
{
[1,1] =
1 17 20
[2,1] =
1 5 17 20 22 27
[3,1] =
1 2 5 17 18 20 21 22 27
}
Хорошо, но теперь Y все еще пуст:
octave:152> Y
Y = [](0x0)
octave:153>
Ясно, что имя Y внутри анонимной функции создало и связало новое хранилище для собственной версии Y.
Каковы правила хранения и разрешения имен в Octave/MATLAB? Когда память выделяется для переменной? Когда два одинаковых имени связаны с одной и той же переменной? (Есть ли способ повлиять на значение Y в приведенной выше анонимной функции?)