Assign matrix to struct

87 views (last 30 days)
Tiki Tiki
Tiki Tiki on 23 Jul 2018
Commented: Tiki Tiki on 25 Jul 2018
Hi everyone
Can you help me for my code?.
I want to assign matrix b to struct g.a at position c.
g(1).a=[1 2 3 4]'
g(2).a=[1 1 3 4]'
g(3).a=[4 3 1 2]'
c=[1 2]
b=[ 3 3 3 3;4 5 4 4]'
My hope output is g.a =
3 4 4
3 5 3
3 4 1
3 4 2
Thank you so much.
  3 Comments
Tiki Tiki
Tiki Tiki on 24 Jul 2018
Thank. but actualy my problem is speed up. so i dont use For here. Can you help me more?

Sign in to comment.

Accepted Answer

Guillaume
Guillaume on 23 Jul 2018
Edited: Guillaume on 23 Jul 2018
As per jan's comment, g.a means nothing. If you type g.a in the command window, you will get 3 outputs (3 times: ans = ...).
[g.a] will indeed return a matrix, which is the horizontal concatenation of all the outputs of g.a. However, [g.a] does not exist in the structure. I believe that you've misunderstood how structures work if that's what you want.
If you want to replace g(c(i)).a by b(:, i), then the easiest is a loop:
for col = 1:numel(c)
g(c(col)).a = b(:, col);
end
While it can be done without a loop, it's awkward and probably slower:
a = {g.a}; %concatenate all in a cell array
a(c) = num2cell(b, 1); %replace columns determined by c by columns in b
[g.a] = a{:}; %put back into structure
  4 Comments
Tiki Tiki
Tiki Tiki on 25 Jul 2018
Thank. Can I ask more about GPU?
How can I work this code on GPU? in my case, g.a is big size. and
because I work on each position of g.a, like get g(1).a or g(2).a,
so How do i change data?

Sign in to comment.

More Answers (1)

KL
KL on 23 Jul 2018
probably you mean something like this
g.a(:,1)=[1 2 3 4]';
g.a(:,2)=[1 1 3 4]';
g.a(:,3)=[4 3 1 2]'
c=[1 2]
b=[3 3 3 3;4 5 4 4]'
and then simply use c as indices in a
g.a(:,c) = b
  1 Comment
Tiki Tiki
Tiki Tiki on 24 Jul 2018
Sorry. I dont mean that. because this is a samples in my work. I defined code like that. so i cannot change. Can you help me?

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!

Translated by