Matrix with Bell Triangle

2 visualizzazioni (ultimi 30 giorni)
Millone
Millone il 22 Mag 2015
Commentato: Millone il 22 Mag 2015
I need to reshape a portion of a matrix computed with the values of a bell triangle where n is the number of rows of a matrix. How can I generate a matrix contain the bell values? I mean, as an example, for n= 4 but could be any value:
1
1 2
2 3 5
5 7 10 15
empty space with 0.
  6 Commenti
Millone
Millone il 22 Mag 2015
No, I have no tried it but I give it a test. Thanks
Millone
Millone il 22 Mag 2015
I do not get it! I am just approaching Matlab!

Accedi per commentare.

Risposta accettata

John D'Errico
John D'Errico il 22 Mag 2015
Simple. Just use loops.
n = 5;
BellTri = zeros(n);
BellTri(1,1) = 1;
for i = 2:n
BellTri(i,1) = BellTri(i-1,i-1);
for j = 2:i
BellTri(i,j) = BellTri(i - 1,j-1) + BellTri(i,j-1);
end
end
BellTri
BellTri =
1 0 0 0 0
1 2 0 0 0
2 3 5 0 0
5 7 10 15 0
15 20 27 37 52

Più risposte (3)

Titus Edelhofer
Titus Edelhofer il 22 Mag 2015
O.k., when there is a full solution, I'm happy to share mine as well ;-)
function B = bell(n)
B = zeros(n);
B(1,1) = 1;
for row=2:n
B(row, 1:row) = B(row-1,row-1) + cumsum([0 B(row-1, 1:row-1)]);
end
Titus

Andrei Bobrov
Andrei Bobrov il 22 Mag 2015
n = 5;
a = zeros(n);
a(1) = 1;
for jj = 1:n-1
a(jj+1,1:jj+1) = cumsum(a(jj,[jj,1:jj]),2);
end

Guillaume
Guillaume il 22 Mag 2015
Assuming you're talking about this, I've tried to come up with a clever way to generate it, but didn't find any (didn't spend too much time on it either). When all else fail, loops always work:
bell = zeros(n);
bell(1) = 1;
for row = 2 : n
bell(row, 1) = bell(row-1, row-1);
for col = 2 : row
bell(row, col) = bell(row, col-1) + bell(row-1, col-1);
end
end

Prodotti

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by