我有一个像
这样的功能f = @(x) x(1).^2 + x(2);
我想通过surf
绘制其绘图,因此我使用meshgrid
生成输入数据:
[x, y] = meshgrid(-2:.2:2);
但是如果我尝试将它传递给像这样的函数
z = f([x; y])
我只得到一个结果值。
除了创建一个接受两个参数(x,y)而不是向量的函数之外,有什么方法可以做到吗?
答案 0 :(得分:2)
我认为你真的很想让request_room_recordset = self.env['request.room'].search(
whatever_domain).ensure_one()
et_pool = self.pool.get('email.template')
mail_sent = et_pool.send_mail(
self.env.cr, 1, template.id, request_room_recordset.id,
force_send=True, context=self.env.context)
取两个参数而且我不能想出一个不这样做的好理由,但这可能就是你之后所做的:
f
然后你可能需要打电话
f = @(x) x(:,1).^2 + x(:,2)
之后您可能需要在z = f([x(:),y(:)])
上致电reshape
,所以也许z
但我真的认为2参数函数是更好的方法:
reshape(z,size(x))
现在你可以去
了f2 = @(x1,x2)x1.^2 + x2
另一种方法可能是使用包装函数,如果
z = f2(x,y)
但你真的需要一个只接受一个参数的函数,那么
f = @(x1,x2)x1.^2 + x2
或者如果您不想使用单元格数组,那么您可以使用结构或3D数组
f_wrapper = @(x) f(x{1},x{2}) %// using a cell array
现在,在将f_wrapper = @(x) f(x.x1,x.x2) %// using structs
f_wrapper = @(x) f(x(:,:,1),x(:,:,2)) %// using a 3D matrix
和f_wrapper
打包成单个变量后,可以在fmincon
之类的x
中使用y
,以便使用单元格数组,结构体或3D矩阵。因此,例如,如果您使用上面的单元格数组版本,请尝试
inputVariable = {x,y}
所以完整地写出这个例子
[x, y] = meshgrid(-2:.2:2);
f = @(x1,x2)x1.^2 + x2;
f_wrapper = @(x) f(x{1},x{2});
inputVar = {x,y};
z = f_wrapper(inputVar)
答案 1 :(得分:0)
UITextField