用matlab表示向量值函数
将以下简短的python/numpy代码翻译成matlab的最佳方法是什么用matlab表示向量值函数,matlab,cell,iterable-unpacking,Matlab,Cell,Iterable Unpacking,将以下简短的python/numpy代码翻译成matlab的最佳方法是什么 from numpy import * F = lambda x, y: (-y, x) points = array(meshgrid([1,2,3], [4,5,6,7])) vx, vy = F(*points) print vx, vy 在上面的代码中,F表示向量值速度场。具体来说,向量值函数应该用单元格表示,还是有更好的方法 第一次尝试翻译上述代码: F = @(x,y) {-y, x}; [X, Y]
from numpy import *
F = lambda x, y: (-y, x)
points = array(meshgrid([1,2,3], [4,5,6,7]))
vx, vy = F(*points)
print vx, vy
在上面的代码中,F
表示向量值速度场。具体来说,向量值函数应该用单元格表示,还是有更好的方法
第一次尝试翻译上述代码:
F = @(x,y) {-y, x};
[X, Y] = meshgrid(1:3, 4:7);
rslt = F(X, Y);
[vx, vy] = rslt{:};
有没有更优雅的方法?例如,匿名函数是否可以返回多个值,以便可以像这样调用它
[vx,vy]=F(X,Y)
无需定义中间变量rslt
您可以将其拆分为两个函数:
%# each is a function of two variables
Fx = @(x,y) -y;
Fy = @(x,y) x;
[X,Y] = meshgrid(1:3, 4:7);
vx = Fx(X,Y);
vy = Fy(X,Y);
内联函数不能返回多个输出,这似乎很奇怪。可以采用以下几种解决方法:
v=f(x,y)
并使用v(1)
和v(2)
deal
如下:
f=@(x,y) deal(-y, x)
[a,b] = f(1,2)
返回:a=-2
和b=1
函数
,而不是使用内联函数。MATLAB现在支持函数中的函数,类似于python)