将varargin和varargout转换为单元格数组

时间:2018-07-19 15:02:08

标签: matlab

我正在尝试使用以下签名调用函数

function [z varargout] = intersectm(varargin)

其中varargin是用逗号分隔的矩阵列表,而varargout也是用逗号分隔的矩阵列表。该功能旨在用作以下用途。

[D, ia, ib, ic] = intersectm(A, B, C, 'rows')

其中D包含矩阵A,B和C中常见的行,而iaibic包含A,B的索引和C包含共同的元素。

在我的程序中,我生成了n矩阵,这些矩阵必须传递到intersectm中,并且我期望此函数有n+1个输出。

如何将n矩阵的单元格数组传递到varargin并将varargout转换为n+1矩阵的单元格数组?

我尝试使用my_matrices{:}作为varargin,但矩阵的形状未保留。它们只是变成了列向量。

这是有问题的function

编辑:

当前:

D, ia, ib, ic = intersectm(A, B, C)

预期:

outputs = intersectm({A, B, C})

其中

outputs{1}D

outputs{2}ia

outputs{3}ib

outputs{4}ic

1 个答案:

答案 0 :(得分:0)

尝试一下:

in = {A B C}; % input
out = cell(1, numel(in)+1); % cell for output
[out{:}] = intersectm(in{:});