# Assign matrix to struct

76 Ansichten (letzte 30 Tage)
Tiki Tiki am 23 Jul. 2018
Kommentiert: Tiki Tiki am 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 Kommentare2 ältere Kommentare anzeigen2 ältere Kommentare ausblenden
Tiki Tiki am 24 Jul. 2018
Thank. but actualy my problem is speed up. so i dont use For here. Can you help me more?

Melden Sie sich an, um zu kommentieren.

### Akzeptierte Antwort

Guillaume am 23 Jul. 2018
Bearbeitet: Guillaume am 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 Kommentare3 ältere Kommentare anzeigen3 ältere Kommentare ausblenden
Tiki Tiki am 25 Jul. 2018
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?

Melden Sie sich an, um zu kommentieren.

### Weitere Antworten (1)

KL am 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 KommentarKeine anzeigenKeine ausblenden
Tiki Tiki am 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?

Melden Sie sich an, um zu kommentieren.

### Kategorien

Mehr zu Matrices and Arrays finden Sie in Help Center und File Exchange

### Community Treasure Hunt

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

Start Hunting!