将varargin和varargout转换为细胞阵列



我正在尝试调用具有以下签名的函数

function [z varargout] = intersectm(varargin)

其中CCD_ 1是逗号分隔的矩阵列表,而CCD_。此功能的用途如下。

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

其中,D包含矩阵A、B和C中公共的行,iaibic包含A、B、C的哪些索引包含公共元素。

在我的程序中,我生成了必须传递到intersectm中的n矩阵,并且我期望该函数输出varargin0。

如何将n矩阵的单元阵列传给varargin,并将varargout转换为n+1矩阵的单元数组?

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

这就是有问题的函数。

编辑:

当前:

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

预期:

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

其中

outputs{1}D

outputs{2}varargout0

outputs{3}ib

outputs{4}ic

试试这个:

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

最新更新