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

Matlab 将varargin和varargout转换为单元格数组,matlab,Matlab,我正在尝试调用具有以下签名的函数 function [z varargout] = intersectm(varargin) 其中,varargin是逗号分隔的矩阵列表,varargout也是逗号分隔的矩阵列表。该功能的用途如下 [D,ia,ib,ic]=intersectm(A,B,C,'行') 其中D包含矩阵A、B和C中常见的行,ia、ib和ic包含A、B和C中哪些索引包含常见元素 在我的程序中,我生成了n矩阵,这些矩阵必须被传递到intersectm,我希望该函数能输出n+1 如何将n矩

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

function [z varargout] = intersectm(varargin)
其中,
varargin
是逗号分隔的矩阵列表,
varargout
也是逗号分隔的矩阵列表。该功能的用途如下

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

其中
D
包含矩阵A、B和C中常见的行,
ia
ib
ic
包含A、B和C中哪些索引包含常见元素

在我的程序中,我生成了
n
矩阵,这些矩阵必须被传递到
intersectm
,我希望该函数能输出
n+1

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

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

这就是问题所在

编辑:

当前:

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

outputs = intersectm({A, B, C})
在哪里

输出{1}
D

输出{2}
ia

输出{3}
ib

输出{4}
ic

试试这个:

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

这将有助于看到实际的投入和相应的结果outputs@Wolfie你指的是我预期的输入和输出,还是函数的实际功能?你可以在这里找到后者:请提供一个你试图描述你想要什么功能的例子,从本质上讲,向我们展示你想要什么功能要强大得多。
intersectm
函数的实际作用似乎与这个问题无关,但不清楚您实际期望的输入/输出行为是什么这正是我要求输入示例,而Sardar要求完整输入的原因,因为
D{:}
应该只将单元格数组
D
的内容作为单独的参数传入,而不改变它们的任何内容。现在你已经接受了抄袭我评论的答案,你说不起作用?你的原始版本不是问题吗?干得好。您甚至没有捕获所有语法,这将无法按预期工作。将单元格数组传递到varargin不起作用,与您的评论相同:)@Wolfie yes,缺少{:}