Comma separated list generation

19 visualizzazioni (ultimi 30 giorni)
Jan
Jan il 22 Giu 2011
Modificato: Stephen23 il 22 Feb 2024
How can you expand a comma separated list from a repetition? I am searching for the elegant way to do something like this:
Instead of
Y = blkdiag(X, X, X),
write Y = repblkdiag(X,3). The code I use now is:
function Y = repblkdiag(X, n)
Y = [];
for j = 1:n
Y = blkdiag(Y, X);
end
I expected that something like
Y = blkdiag(deal(repmat(X,3)))
would work. Thanks for your interest and contribution,
Jan

Risposta accettata

Andrei Bobrov
Andrei Bobrov il 22 Giu 2011
xc = repmat({X},1,3)
Y = blkdiag(xc{:})
  4 Commenti
Teja Muppirala
Teja Muppirala il 22 Giu 2011
It is possible to do it in one line, but I think Andrei's solution is simpler.
Y = eval(['blkdiag( ' repmat('X,',1,3) '[])'])
Stephen23
Stephen23 il 22 Feb 2024
Modificato: Stephen23 il 22 Feb 2024
Another neat approach:
C = {X};
Y = blkdiag(C{[1,1,1]})
One line (since R2019b):
Y = blkdiag(struct('x',repmat({X},1,3)).x)
... but I recommend using two lines.

Accedi per commentare.

Più risposte (0)

Prodotti

Community Treasure Hunt

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

Start Hunting!

Translated by