使用网格测试测试算法时,算法有多个参数,最终参数的集合实际上是每一个参数集合的笛卡尔积。
function C = cartesian(varargin)
args = varargin;
n = nargin;
[F{1:n}] = ndgrid(args{:});
for i=n:-1:1
G(:,i) = F{i}(:);
end
C = unique(G , 'rows');
end
这个函数的输入参数个数是可变的。
用法如下
cartesian(['c','d','e'],[1,2],[50,70])
ans =
99 1 50
99 1 70
99 2 50
99 2 70
100 1 50
100 1 70
100 2 50
100 2 70
101 1 50
101 1 70
101 2 50
101 2 70
参考:
https://stackoverflow.com/questions/9834254/cartesian-product-in-matlab