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

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.

 Accepted Answer

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 Comments

Thanks for your answer. YOu can accept it so other people can use it
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
Cool, thx! Actually this is the only right answer, mine does something else.

Sign in to comment.

More Answers (0)

Categories

Asked:

on 9 Feb 2021

Edited:

on 9 Feb 2021

Community Treasure Hunt

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

Start Hunting!