Assigning an Array to Structure Field

14 views (last 30 days)
Nick G
Nick G on 1 Sep 2015
Answered: Walter Roberson on 1 Sep 2015
I'm having trouble assigning an array to a structure field.
shuff = randperm(length(unshuff));
[unshuff.trial] = shuff;
I get the following error message:
Too many output arguments.
Any ideas?

Answers (1)

Walter Roberson
Walter Roberson on 1 Sep 2015
If unshuff is an existing structure array, then
unshuff.trial
would expand to multiple locations as if you had written
[unshuff(1).trial, unshuff(2).trial, ... unshuff(end).trial] = shuff;
but your shuff is only a single output.
If you want to assign the same value to each of the locations, use
[unshuff.trial] = deal(shuff);
If you want to assign one of the values in shuff to each of the outputs then:
shuff = num2cell(randperm(length(unshuff)));
[unshuff.trial] = shuff{:}; %or deal(shuff{:})

Categories

Find more on Structures in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!