Initialize field values in a structure + create a list of zeros(10,10)

14 ビュー (過去 30 日間)
The Gogo
The Gogo 2021 年 2 月 9 日
編集済み: The Gogo 2021 年 2 月 9 日
Hi everyone, I want to initialize the same field for several indexes in a structure by some zeros(10,10), and I can't figure out how.
Already took me a while to figure out how to just initialize them to 0:
[test(5:9).field] = deal(0,0,0,0)
Which works but
  • I don't want to initialize by a scalar zero but by a 10x10 zeros matrixes
  • And obviously I don't want to repeat the
zeros(10,10)
as many times as I have indexes to initialize.
All the options I find are some kind of concatenation functions (for example repmat) which will obviously won't do the job.
There must be an easy an elegant way, but I can't seem to find it :/
Thanks in advance!
P.S.: and obviously, I'm not looking for a loop.

採用された回答

The Gogo
The Gogo 2021 年 2 月 9 日
編集済み: The Gogo 2021 年 2 月 9 日
CORRECTION: actually the correct answer is in the comments of this answer. by Stephen Cobeldick.
test2 = cell(4,1);
test2(:) = zeros(10,10);
[test(5:9).field] = deal(test2);
Sorry for disturbing. I hope my struggle might be useful to some other people. If anyone has a shorter way, I'm still interested.
  3 件のコメント
Stephen23
Stephen23 2021 年 2 月 9 日
Simpler without the cell array:
mat = zeros(10,10);
[test(5:9).field] = deal(mat)
test = 1x9 struct array with fields:
field
test(4).field
ans = []
test(5).field
ans = 10×10
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
The Gogo
The Gogo 2021 年 2 月 9 日
編集済み: The Gogo 2021 年 2 月 9 日
Cool, thx! Actually this is the only right answer, mine does something else.

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

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeStructures についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by