如何在matlab中删除pascal三角矩阵中的零?

时间:2017-10-10 19:56:29

标签: matlab

我设法编写了一个函数,用于以矩阵的形式绘制一个pascal三角形,但是想让它看起来像一个三角形。

当我要求一个有四行的帕斯卡三角形时,它会给出

1 0 0 0

1 1 0 0

1 2 1 0

1 3 3 1

有没有办法让这个

1

1 1

1 2 1

1 3 3 1

function x = testfunc(n)

  x = eye(n);
  x(:, 1) = 1;


  for j=3:n
    for i = 2 : n - 1
      x(j, i) = x(j - 1, i - 1) + x(j - 1, i);
    end
  end

end

这是我目前的代码

1 个答案:

答案 0 :(得分:0)

如果您只对视觉效果感兴趣,那么您可以将其转换为单元格数组,然后使用cellfun循环遍历所有单元格,然后仅显示非0的值。

a= mat2cell(x,ones(n,1),n); %turn into cell array
cellfun(@(a)disp(a(a~=0)),a) %loop over cells and print only nonzero elements

如果您对保存内存感兴趣,可以从头开始使用单元格数组,也可以将其转换为稀疏矩阵,例如:

x = sparse(eye(n));

然后只会表示非零元素