2013-10-27 67 views
-2

我一直在网上搜索几个早晨,什么都没发现,希望你能帮上忙。matlab常量匿名函数只返回一个值而不是数组

我有这样

f = @(x,y) [sin(2*pi*x).*cos(2*pi*y), cos(2*pi*x).*sin(2*pi*y)]; 

匿名函数,需要点的阵列上进行评估,像

x = 0:0.1:1; 
y = 0:0.1:1; 
w = f(x',y'); 

现在,在上面的例子中一切正常,结果w是11x2矩阵,每行有正确的值f(x(i),y(i))。 问题是当我改变我的功能,具有恒定的值:

f = @(x,y) [0, 1]; 

现在,即使是像以前一样阵列的投入,我只得到了一个1x2的阵列像W = [0,1]。当然我想要具有与之前相同的结构,即11×2矩阵。

我不知道为什么Matlab的是这样做的......

编辑1 对不起,我以为是我在原来的问题写了很清楚,但我看到你们中的一些要求,所以在这里是一个澄清:我想要的是再次有一个11x2矩阵,因为我正在用有11个元素的数组提供函数。 这意味着我期望在第一个例子中具有完全一样的输出,只需更改其中的值即可:具有11行和2列的矩阵,第一列中只有值0,第二列中只有值1,因为对于所有的x(i)和y(i)答案应该是向量[0,1]。 这意味着我期望有:

w = [0 1 
    0 1 
    0 1 
    ... 
    0 1] 

似乎很自然的我......

+1

为什么你会想到'@(X,Y)[0,1]'返回enything别的,而是'[0,1] '????? – Shai

+0

我已经更新了这个问题并提供了澄清 – Filo

+0

我不知道为什么这是downvoted。我认为这对于一个有更多数学背景的人来说是一个完全合理的问题。 –

回答

1

你定义它具有输入参数x,y和输出[0,1]功能f = @(x,y) [0, 1];。你还期望发生什么?

更新:

这应该与你的描述:

[email protected](x,y)[zeros(size(x)),ones(size(y))] 
g(x',y') 
+0

我会通过澄清更新这个问题 – Filo

+0

@Filo:更新了我的回答 – Daniel

+0

是啊谢谢你...我认为matlab会默认返回一个相同大小的输入值,但现在我想我开始看到我推理中的缺陷。谢谢您的帮助 – Filo

相关问题