Mar*_*ary 6 matlab function vector any
我希望在函数中包含或(或任何),其中传入的参数(逻辑向量)的数量可以多于两个并且可以在数量上变化.例如,父函数可以创建
a=[1;0;0;0]
b=[0;1;0;0]
c=[0;0;0;1]
Run Code Online (Sandbox Code Playgroud)
但下次可能会补充
d=[0;0;1;0]
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我如何得到它,第一次给我X = [1; 1; 0; 1],第二次给我X = [1; 1; 1; 1]?向量的数量可以达到20,因此需要能够识别传递了多少向量.
我就是这样做的:
function y = f(varargin)
y = any([varargin{:}], 2);
Run Code Online (Sandbox Code Playgroud)
varargin是一个带有函数输入参数的单元格数组.{:}生成这些参数的逗号分隔列表,并[...](或horzcat)水平连接它们.所以现在我们有一个矩阵,每列中有一个向量.any沿第二维应用给出了期望的结果.
由于该函数包含单个语句,您还可以将其定义为匿名函数:
f = @(varargin) any([varargin{:}], 2);
Run Code Online (Sandbox Code Playgroud)
示例运行:
>> f([1; 1; 0; 0], [1; 0; 0; 1])
ans =
4×1 logical array
1
1
0
1
>> f([1; 1; 0; 0], [1; 0; 0; 1], [0; 0; 1; 0])
ans =
4×1 logical array
1
1
1
1
Run Code Online (Sandbox Code Playgroud)