|
| matlab syntax Fra : Søren N |
Dato : 04-10-04 21:02 |
|
Jeg har en matrise i tre dimensioner A. Jeg har også en anden matrise i to
dimensioner (3*n) B hvor hver søjle er en 3dkoordinat.
Jeg vil nu gerne tolke 3dkoordinaterne B som index ind i A og sætte alle de
tilsvarende punkter til en værdi.
Eksempelvis har jeg koordinaten (3,6,2) i B og vil gerne sætte A(3,6,2) til
en værdi.
Jeg forsøgte dette
A(B(1,:),B(2,:),B(3,:))=567;
men det sætter samtlige kombinationer af de tre b-værdier i a til 567. Hver
kolon-iterator kører selvstændigt, så det reelt svarer til
for b1=1 to length(b)
for b2=1 to length(b)
for b3=1 to length(b)
a(b1,b2,b3)=567;
Det jeg ønsker er mere
for i=1 to length(b)
a(b(1,i),b(2,i),b(3,i))=567;
Kan nogen her give mig et tip til hvordan jeg lige opnår dette med
vektornotation. Det er nemt nok med løkker, men også langsommere.
| |
Niels L Ellegaard (04-10-2004)
| Kommentar Fra : Niels L Ellegaard |
Dato : 04-10-04 21:22 |
|
On Mon, 4 Oct 2004 22:01:53 +0200
"Søren N" <soren@ni.mail.dk> wrote:
> Jeg har en matrise i tre dimensioner A. Jeg har også en anden matrise > i to dimensioner (3*n) B hvor hver søjle er en 3dkoordinat.
> Jeg vil nu gerne tolke 3dkoordinaterne B som index ind i A og sætte
> alle de tilsvarende punkter til en værdi.
> Eksempelvis har jeg koordinaten (3,6,2) i B og vil gerne sætte
> A(3,6,2) til en værdi.
Frit efter hukommelsen: Der er noget med at man kan opfatte alle matricer some vektorer. Det betyder at du kan gøre sådan her
A([1,2,3]) = 3
Det betyder det samme som
A(1,1,1)=3
A(2,1,1)=3
A(3,1,1)=3
Nu er spørgsmålet hvordan du skriver B om til en vektor bestående af elementer. Det kan man sikkert gøre på flere måder.
| |
|
|