【发布时间】:2012-05-01 12:58:01
【问题描述】:
所以我有一个向量 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)
然后我用 "Y = unique([Y x])" 对 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 的值吗?)
【问题讨论】: