Comma separated list generation

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

 採用された回答

Andrei Bobrov
Andrei Bobrov 2011 年 6 月 22 日

0 投票

xc = repmat({X},1,3)
Y = blkdiag(xc{:})

4 件のコメント

Jan
Jan 2011 年 6 月 22 日
Thanks Andrei,
This is indeed more elegant. No possibility to do it in-line?
Regards,
Jan
Andrei Bobrov
Andrei Bobrov 2011 年 6 月 22 日
I think don't possible
Teja Muppirala
Teja Muppirala 2011 年 6 月 22 日
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 2024 年 2 月 22 日
編集済み: Stephen23 2024 年 2 月 22 日
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.

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

製品

質問済み:

Jan
2011 年 6 月 22 日

編集済み:

2024 年 2 月 22 日

Community Treasure Hunt

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

Start Hunting!

Translated by