Irgendwie hab ich grad nen Hänger: angenommen die Indexwerte der Matrix f stehen in der variable a, also: f=rand(100,100); %2 D Matrix a=[50 50]; % gewünschter Index f(50,50) f(a)=? so funktioniert das nicht. Was man bekommt ist [f(a(1)) f(a(2))], was ich aber will ist f(a(1),a(2)). Gibt es da wirklich keine einfachere Möglichkeit, als f(a(1),a(2)) zu schreiben?
Gast
#2721430
Vielleicht f(a*[1;100]-100) ? Ist nicht schön aber anders. Könnte sogar schnell sein, da MATLAB intern auch mit linearen indices rechnet...
j. c. schrieb: > so funktioniert das nicht. Was man bekommt ist [f(a(1)) f(a(2))], was > ich aber will ist f(a(1),a(2)). Gibt es da wirklich keine einfachere > Möglichkeit, als f(a(1),a(2)) zu schreiben? Vieleicht verstehe ich nicht, was Du willst, aber bei mir funktioniert das:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
Also das Element in Zeile 3 und Spalte 2 wird ausgegeben.
J.-u. G. schrieb: > Vieleicht verstehe ich nicht [...] scheinbar: j. c. schrieb: > Gibt es da wirklich keine einfachere > Möglichkeit, als f(a(1),a(2)) zu schreiben?
Timmo H. schrieb: > J.-u. G. schrieb: >> Vieleicht verstehe ich nicht [...] > scheinbar: > j. c. schrieb: >> Gibt es da wirklich keine einfachere >> Möglichkeit, als f(a(1),a(2)) zu schreiben? Ah ok. Hab mir schon gedacht, was überlesen zu haben. Aber dann verstehe ich die Frage erst recht nicht. Er will f(a(1),a(2)) aber er will nicht f(a(1),a(2)) schreiben? Vieleicht geht ja was mit logischer Indexierung. Wobei damit die "komplizierte Schreibweise" wohl auch nur an eine andere Stelle geschoben wird.
Nimm mal an, es gibt statt 2 Indices 20. f(a(1),a(2),....) wird da schnell unübersichtlich!
j. c. schrieb: > Nimm mal an, es gibt statt 2 Indices 20. f(a(1),a(2),....) wird da > schnell unübersichtlich! Kannst Du etwas mehr zu dem Problem schreiben? Wie soll denn die Matrix mit 20 Indizes adressiert werden? Sollen dann 10 Elemente geliefert werden?
Also mal angenommen, Du hast die Matrix f:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
und hast einen Vektor
1 | |
der so zu interpretieren ist, dass die Elemente (2,1), (1,3) und (3,3) ausgelesen werden sollen. Dazu kann man lineare Indizierung verwenden. Zunächst ist mittels "sub2ind" ein Vektor mit den Indizes für die lineare Indexierung zu erstellen:
1 | |
2 | |
3 | |
4 | |
5 | |
Damit kann jetzt relativ einfach auf die gewünschten Elemente zugegriffen werden:
1 | |
2 | |
3 | |
4 | |
Sind die Zeilen- und Spaltenindizes anders im Vektor "index" codiert, muß der Aufruf von "sub2ind" entsprechend angepasst werden.
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.