0

我有一个矩阵,其中每一行都有不同的大小,额外的地方用零填充。该矩阵取决于一些输入参数,因此具有动态而非固定的行数和大小。

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 ?

4

1 回答 1

0

如果您不希望 的输入向量中有任何零,则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{:});
于 2012-05-18T12:32:38.093 回答