Matlab中减少返回变量的函数设计

Matlab中减少返回变量的函数设计,matlab,function,struct,output,cell,Matlab,Function,Struct,Output,Cell,这不是一个我需要知道如何在MATLAB中添加a+B的问题。这更多的是一个代码设计问题 我有几个函数文件返回一个数值矩阵和矩阵上的索引信息。比如说 function [Mat1, IdxID, IdxDate, IdxVal, IdxMarker, IdxOpen, ...] = First () .... .... % where IdxId = 1 ; IdxDate = 2 ; ... end function [Mat1, IdxUid, IdxName, Idx

这不是一个我需要知道如何在
MATLAB
中添加a+B的问题。这更多的是一个代码设计问题

我有几个函数文件返回一个数值矩阵和矩阵上的索引信息。比如说

function [Mat1, IdxID, IdxDate, IdxVal, IdxMarker, IdxOpen, ...] = First () 
    .... 
    .... % where IdxId = 1 ; IdxDate = 2 ; ...
end 


function [Mat1, IdxUid, IdxName, IdxVal, Mat2, IdxUid2, IdxSalary2, ...] = Second () 
    ....
    .... % where IdxUid= 1 ; IdxName= 2 ; ...
end
正如您所看到的,代码变得笨拙,当我调用这些函数时,我必须声明相等数量的输出以捕获所有索引。优点是,如果我突然交换ID和Date列,调用函数不会改变,因为我只需将ID=2,Date=1。我还有在函数中重命名这些变量的优点


有更好的方法吗?我正在测试
struct
cell
是否可以用于索引。我不能使用
数据集
单元格
返回数值矩阵。把它翻译成数字会浪费太多时间。谢谢。

是的,您可以返回数组/单元格/结构。例如,
id
可以是具有多个变量的结构。您的函数定义可以如下所示

function [Mat, Id] = Second () 
    ...
end
在函数中,设置以下项:

Id.Name
Id.Val
Id.Salary
...

如果你发现你有多个结构相同的精确结构,你甚至可以考虑<代码>对象< /代码> .<


如果您想获得更详细的答案,请详细说明结构。

也许您可以澄清您对每个变量的实际操作。我的方法会起作用,但详细设计将取决于层次结构、类型以及您将如何处理变量。