Effacer les filtres
Effacer les filtres

Comma separated list generation

2 vues (au cours des 30 derniers jours)
Jan
Jan le 22 Juin 2011
Modifié(e) : Stephen23 le 22 Fév 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

Réponse acceptée

Andrei Bobrov
Andrei Bobrov le 22 Juin 2011
xc = repmat({X},1,3)
Y = blkdiag(xc{:})
  4 commentaires
Teja Muppirala
Teja Muppirala le 22 Juin 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 le 22 Fév 2024
Modifié(e) : Stephen23 le 22 Fév 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.

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Loops and Conditional Statements dans Help Center et File Exchange

Produits

Community Treasure Hunt

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

Start Hunting!

Translated by