Matlab matrix
-
- Berichten: 4
Matlab matrix
Hallo
Ik heb bijvoorbeeld een matrix A en B:
A = [ 0 0 0 0 1 2 3 0 0 0 0]'
B = [ -2 -2 -1]'
Nu wil ik graag de matrix C krijgen:
C = [ 0 0 1 2 0 3 0 0 0 0 0]'
Dus het getal B(i,1) geeft aan hoeveel plaatsen het getal A(i+4,1) in matrix A moet opschuiven...
Heb je hier een functie voor en hoe werkt dat dan precies? Kan iemand mij daar mee helpen?
Heb het wel kunnen maken met behulp van een loop, maar dit wil ik niet...
gr. RH
Ik heb bijvoorbeeld een matrix A en B:
A = [ 0 0 0 0 1 2 3 0 0 0 0]'
B = [ -2 -2 -1]'
Nu wil ik graag de matrix C krijgen:
C = [ 0 0 1 2 0 3 0 0 0 0 0]'
Dus het getal B(i,1) geeft aan hoeveel plaatsen het getal A(i+4,1) in matrix A moet opschuiven...
Heb je hier een functie voor en hoe werkt dat dan precies? Kan iemand mij daar mee helpen?
Heb het wel kunnen maken met behulp van een loop, maar dit wil ik niet...
gr. RH
- Berichten: 6.905
Re: Matlab matrix
Het zal wel met een loop moeten. Iets anders lijkt mij niet eenvoudig te verzinnen.Heb het wel kunnen maken met behulp van een loop, maar dit wil ik niet...
Het vel van de beer kunnen verkopen vraagt moeite tenzij deze dood voor je neervalt. Die kans is echter klein dus moeten we zelf moeite doen.
- Berichten: 2.097
Re: Matlab matrix
Je kan het bijvoorbeeld als volgt doen:
C=zeros(numel(A),1);
N=B+[5;6;7];
C(N(1:numel(N))=A(5:4+numel(B));
C=zeros(numel(A),1);
N=B+[5;6;7];
C(N(1:numel(N))=A(5:4+numel(B));
"Why must you speak when you have nothing to say?" -Hornblower
Conserve energy: Commute with a Hamiltonian
Conserve energy: Commute with a Hamiltonian
- Berichten: 5.609
Re: Matlab matrix
Algemener kun je (in een loop weliswaar) B = [ -2 -2 -1]' omzetten in een matrix van 0'tjes en 1'tjes, die na de vermenigvuldiging met A het gevraagde antwoord geeft. Als je 1 B op verschillende A moet toepassen, gaat dit volgens mij wat sneller.
Edit: als dat van ZvdP werkt, dan heb ik dit hier nooit geschreven
Edit: als dat van ZvdP werkt, dan heb ik dit hier nooit geschreven
What it all comes down to, is that I haven't got it all figured out just yet
And I've got one hand in my pocket and the other one is giving the peace sign
-Alanis Morisette-
And I've got one hand in my pocket and the other one is giving the peace sign
-Alanis Morisette-
- Berichten: 7.224
Re: Matlab matrix
Correct, maar wel onnodig veel code. Daarnaast werkt dit alleen voor de gegeven case en niet algemeen (Maak B eens van lengte 4).ZVdP schreef:Je kan het bijvoorbeeld als volgt doen:
C=zeros(numel(A),1);
N=B+[5;6;7];
C(N(1:numel(N))=A(5:4+numel(B));
Code: Selecteer alles
C = zeros(size(A));
x = (1 : length(B))' + 4;
C(B+x) = A(x);
If I have seen further it is by standing on the shoulders of giants.-- Isaac Newton