matlab如何让输出一个函数,matlab – 如何直接将函数的多个输出传递给另一个?...

要回答标题中的问题:使用以下函数,可以将函数的多个输出重定向到另一个:

function varargout = redirect(source, destination, n_output_source, which_redirect_from_source, varargin)

%(redirect(source, destination, n_output_source, which_redirect_from_source,....)

%redirect output of a function (source) to input of another function(destination)

% source: function pointer

% destination: function pointer

% n_output_source: number of outputs of source function (to select best overload function)

% which_redirect_from_source: indices of outputs to be redirected

% varargin arguments to source function

output = cell(1, n_output_source);

[output{:}] = source(varargin{:});

varargout = cell(1, max(nargout,1));

[varargout{:}] = destination(output{which_redirect_from_source});

end

现在我们可以将它应用于示例:

[~,R] = redirect(@meshgrid,@cart2pol, 2, [1, 2], -2:2, -2:2)

这里,源函数有2个输出,我们想要将输出1和2从源重定向到目标. -2:2是源函数的输入参数.

处理上述示例的其他方法:如果你可以使用GNU Octave,使用bsxfun和nthargout这是你的解决方案:

R = bsxfun(@(a,b) nthargout(2, @cart2pol,a,b),(-2:2)',(-2:2))

在Matlab中,一个可能的解决方案是:

[~, R] = cart2pol(meshgrid(-2:2), transpose(meshgrid(-2:2)))

要么

function R = cart2pol2(m)

[~,R] = cart2pol(m,m')

end

cart2pol2(meshgrid(-2:2, -2:2))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值