Matlab 使用不同的参数集多次应用同一函数

Matlab 使用不同的参数集多次应用同一函数,matlab,function,cell,Matlab,Function,Cell,这是我函数的一部分,我想将过去的4组数据输入我的函数血型 在每个集合中,一个参数是数值,另一个参数是字符 对于输出类型和Vol,它们都是大小为80*80*2的3D矩阵 我想有一个简洁的方法,这样我就可以获得一个所有类型的,这是通过连接4个血液类型的输出(每个类型都来自每个患者id和患者姓名)得到的结果 ALL_TYPE=cat(3,类型1,类型2,类型3,类型4) 同样地,我想要 ALL_VOL=cat(3、1、2、3、4) 而不是写: [Type1 Vol1] = blood_type(1,

这是我函数的一部分,我想将过去的4组数据输入我的函数
血型

在每个集合中,一个参数是
数值
,另一个参数是
字符

对于输出
类型
Vol
,它们都是大小为
80*80*2
的3D矩阵

我想有一个简洁的方法,这样我就可以获得一个
所有类型的
,这是通过连接4个
血液类型的输出(每个类型都来自每个
患者id
患者姓名
)得到的结果

ALL_TYPE=cat(3,类型1,类型2,类型3,类型4)

同样地,我想要

ALL_VOL=cat(3、1、2、3、4)

而不是写:

[Type1 Vol1] = blood_type(1, 'Ann');
[Type2 Vol2] = blood_type(2, 'Ben');
[Type3 Vol3] = blood_type(3, 'Chris');
[Type4 Vol4] = blood_type(4, 'David');
有什么方法可以选择这对参数并产生更有效的输出?这是因为我有数百名患者,如果我输入数百次姓名和他们的ID,这将非常麻烦


提前感谢。

这里有一个方法,使用
cellfun

%'The arguments of the function need to be typed once anyways'
patient_id   = {1,2,3,4};
patient_name = {'Ann','Ben','Chris','David'};

[ALL_TYPE, ALL_VOL] = cellfun( ...
   @blood_type, patient_id, patient_name, ...
   'UniformOutput', false ...
);

ALL_TYPE = cat(3, ALL_TYPE{:});
ALL_VOL  = cat(3, ALL_VOL{:});

您的问题似乎有点奇怪:如果您不提供患者的姓名和身份证,程序如何知道需要什么
血型
?这意味着您需要至少键入一次患者的姓名和ID。但您希望避免这种情况。Nice and simple=)@nam:请注意,尽管
cellfun
简洁易读,这只是一个伪装的for循环。@CST感谢您的解决方案,@stewie感谢您提醒我们解释
cellfun