我有一个矩阵,其中每一行都有不同的大小,额外的地方用零填充。该矩阵取决于一些输入参数,因此具有动态而非固定的行数和大小。
for e.g.
1 2 4 5 0
1 3 0 0 0
1 2 3 4 5
如何创建 n 组不同大小(每行一组)并将其发送到另一个函数,例如 cartprod http://www.mathworks.com/matlabcentral/fileexchange/5475-cartprod-cartesian-product-of-multiple-sets ?
我有一个矩阵,其中每一行都有不同的大小,额外的地方用零填充。该矩阵取决于一些输入参数,因此具有动态而非固定的行数和大小。
for e.g.
1 2 4 5 0
1 3 0 0 0
1 2 3 4 5
如何创建 n 组不同大小(每行一组)并将其发送到另一个函数,例如 cartprod http://www.mathworks.com/matlabcentral/fileexchange/5475-cartprod-cartesian-product-of-multiple-sets ?
如果您不希望 的输入向量中有任何零,则cartprod
可以使用以下命令:
CellArrayWithoutZeros = cellfun(@(x) x(find(x)), num2cell(Matrix, 2), 'UniformOutput', false);
CartProdResultMatrix = cartprod(CellArrayWithoutZeros{:});
编辑:如果您只想切断输入向量的前导零(在任何非零元素的右侧)cartprod
:
CellArrayWithoutLeadingZeros = cellfun(@(x) x(1:find(x, 1, 'last')), num2cell(Matrix, 2), 'UniformOutput', false);
CartProdResultMatrix = cartprod(CellArrayWithoutLeadingZeros{:});