【发布时间】:2018-04-20 19:32:06
【问题描述】:
是否有任何自然方法来定义具有多个输出的 MATLAB 函数,这些输出不能或不适合“堆叠”到矩阵中?例如,如果我想要一个函数f,它返回一个3x3 矩阵A 和一个4x4 矩阵B?
我真的很惊讶这甚至会成为 MATLAB 中的一个问题。因为在 Python 中,我们需要做的就是return A, B,它返回两者的元组。然而,MATLAB 似乎不太支持容器的想法。作为一种不优雅的解决方法,我可以使用struct 将两条数据放入其中,函数类似于:
function re = f(x)
%f: returns two dimensional-inconsistent matrices A and B
% function body as follows
....
A = ...;
B = ...;
% put data into the struct 're'
re.A = A;
re.B = B;
end
除了可能的性能问题外,这种方法看起来非常不自然和笨拙。有没有更好的办法?
【问题讨论】:
-
我不明白这个问题,只是将输出定义为 [A, B] 确定?
-
@nkjt 抱歉,我在考虑如何让它像 Python 一样工作。是的,你完全正确。只是在 matlab 中,如果我只想访问函数的第二个输出,比如在这种情况下,
[~, second_out]=f(x);,我将付出更多的努力,而在 Python 中,我可以只做second_out = f(x)[1]。 -
Matlab 不太支持容器的概念 它支持。相当于 Python 的列表或元组(可能是异构事物的容器)是 cell array
标签: matlab function output containers grouping