|
Gast |
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 04.09.2012, 20:34
Titel: if-abfrage
|
 |
Hallo zusammen!
Irgendwie hab ich ein großes Problem mit einem Programm und irgendwie steh ich komplett auf den Schlauch!
aa_sum ist eine (822x411) matrix, entf ein 1x65 vektor und angle ist auch ein 1x65 vektor. Ich habe jetzt versucht, mir die aa_sum ausgeben zu lassen, für die die Bedingungen enft und angle stimmen und erhalte einen 1x70 vektor. soweit hat das auch funktioniert.
Jetzt mein Problem, ich will nicht nur die aa_sum werte von entf und angle, sondern ich will einen wertebereich abfragen, also ich will das alle werte von aa_sum ausgegeben werden für die gilt: entf +/-1 und angle +/-1. Ist das irgendwie möglich?
Hoff einer kann mir dabei helfen?
danke schonmal.
|
|
|
|
|
flashpixx |

Forum-Guru
|
 |
Beiträge: 355
|
 |
|
 |
Anmeldedatum: 19.04.08
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 04.09.2012, 21:43
Titel:
|
 |
|
|
Gast |
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 05.09.2012, 09:49
Titel:
|
 |
hallo!
Danke für den link, hab mir diesen jetzt mal durchgelesen, aber irgendwie löst der mein problem nicht ganz. ich probiers mal anhand eines beispiels zu erklären:
Mein angle-vektor enthält die werte
angle = 1.02, 2.8,3.0, 4.22 ...
mein enft-vektor sieht so aus:
entf = 20, 58, 200, 201 ...
und ich will jetzt, dass matlab nicht nur auf die werte zugreift, sondern dass es alle aa_sum-werte ausgibt, die zwischen +/-1 liegen:
-1 angle +1 also 0.2 1.02 2.02 oder 1.8 2.8 3.8
ist das irgendwie möglich?
mfg
|
|
|
tschun |

Forum-Fortgeschrittener
|
 |
Beiträge: 73
|
 |
|
 |
Anmeldedatum: 05.04.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 05.09.2012, 10:03
Titel:
|
 |
Hi,
Mir ist der Zusammenhang zwischen aa_sum, entf und angle nicht klar.
Ich kann mir aber nicht vorstellen, dass dein ursprüngliches Beispiel lauffähig ist, wenn in entf und angle nicht zufällig natürliche Zahlen standen.
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 05.09.2012, 10:20
Titel:
|
 |
Hallo,
Ich verstehe die Aufgabe auch noch nicht.
Allgemein kann man Intervalle so bearbeiten:
Gruß, Jan
|
|
|
flashpixx |

Forum-Guru
|
 |
Beiträge: 355
|
 |
|
 |
Anmeldedatum: 19.04.08
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 05.09.2012, 10:35
Titel:
|
 |
@Jan: Was ja letztendlich "logical indexing" + einem vektoriellen and ist
|
|
|
Gast |
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 05.09.2012, 11:33
Titel:
|
 |
hi leute!
Danke schonmal. so ähnlich habe ich es auch schon gehabt, hab jetzt folgendes probiert.
angle_min = angle-1;
angle_max = angle+1;
entf_min = entf-1;
entf_max = entf+1;
Jetzt bekomme ich aber diese fehlermeldung:
??? index_angle(i) = and(angle(i) >= angle_min(i), angle(i) < = angle_max(i))
|
Error: The expression to the left of the equals sign is not a valid target for an assignment.
Irgendwie versteh ich gar nichts mehr, an diesem Problem sitz ich jetzt schon seit tagen und ich komm einfach nicht weiter!
MFG
|
|
|
Kascho |

Forum-Century
|
 |
Beiträge: 195
|
 |
|
 |
Anmeldedatum: 24.03.10
|
 |
|
 |
Wohnort: Jena
|
 |
|
 |
Version: R2008b ... :(
|
 |
|
|
 |
|
Verfasst am: 05.09.2012, 11:46
Titel:
|
 |
Also ich hab das hier nur überflogen, aber du solltest als Variable nicht "angle" verwenden, da dies eine matlabfunktion zur Berechnung des Phasenwinkels ist.
Gruß, Kascho
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 05.09.2012, 15:29
Titel:
|
 |
Hallo,
Zitat: |
??? index_angle(i) = and(angle(i) >= angle_min(i), angle(i) < = angle_max(i)) |
Das "<=" darf kein Leerzeichen zwischen "<" und "=" enthalten.
Gruß, Jan
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 05.09.2012, 16:01
Titel:
|
 |
Hallo flashpixx,
Ja, ich weiß das dies Logical indexing und ein vektorisiertes AND ist.
Wenn ein Link zur Dokumentation nicht weiter hilft, ist ein konkretes Beispiel oft hilfreicher.
Viele User dieses Forums haben Verständnisprobleme bei der englisch formulierten Dokumentation und erst nach einem auf das spezielle Problem zugeschnirttenen Lösung wird die Funktionsweise eines Befehls klar.
Gruß, Jan
|
|
|
Gast |
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 05.09.2012, 18:17
Titel:
|
 |
hallo nochmal!
auf was man bei matlab alles aufpassen muss, danke!!
Der Code läuft jetzt mal ohne fehlermeldung durch, nur leider bekomme ich jetzt als lösungsvektor einen 1x65 längen vektor mit lauter 1er drinnen.
Das sollte doch auch nicht sein, oder?
Eigentlich sollte matlab doch in der schleife alle werte einzlen abfragen und nur wenn die bedingungen erfüllt sind, gibt matlab mir den index aus? Oder versteh ich das falsch.
Ich schreibe euch mal den aktuellen code:
for i = 1:length(an)
index_an(i) = and(an(i) >= an_min(i), an(i) < = an_max(i)) ;
index_entf(i) = and(entf(i) >= entf_min(i), angle(i) <= angle_max(i)) ;
a = a_sum(entf(index_entf(i), an(index_an(i));
end
Matlab gibt mir jetzt für a immer den gleichen wert aus, weil ja index_enft und index_an immer 1 ist.
habe ich da irgendwo in meiner schleife einen Fehler?
MFG
|
|
|
Sirius3 |

Forum-Guru
|
 |
Beiträge: 441
|
 |
|
 |
Anmeldedatum: 12.11.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 05.09.2012, 20:53
Titel:
|
 |
Was erwartest Du?
Ich habe die Dimensionen der Matrix aa_sum immer noch nicht verstanden.
Wenn Du aa_sum(entf(k), an(k)) schreibst, heißt das doch, dass entf
ganze Zahlen zwischen 1 und 822 und an ganze Zahlen zwischen 1 und 411
enthält. Was heißt dann das Intervall +/-1? Das sind ja dann die benachbarten
Matrixelemente. An anderer Stelle schreibst Du aber an sei 1.2 oder 2.8?
Grüße
Sirius
|
|
|
Gast |
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 05.09.2012, 21:40
Titel:
|
 |
hallo!
Ich will nicht, dass matlab das benachbarte matrixelement nimmt, sondern die nächste größere zahl.
Das ist so, wie in physik bei einer Fehlerangebe, man bekommt z.B. den wert 1.2 heraus und man weiss aus erfahrung, das der wahre wert irgendwo zwischen 1 und 1.4 liegt, also 1.2+/-0.2.
Und genau das, will ich jetzt, dass matlab macht. ich will nicht nur einen bestimmten wert, sondern so eine art spanne rund um eine zahl aus der matrix a_sum.
Ist irgendwie blöd zu erklären, aber vielleicht hats geholfen.
MFG
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 06.09.2012, 10:16
Titel:
|
 |
Hallo,
Also ich verstehe immer noch nicht, was Du genau erreichen möchtest.
Soweit ich das verstehe würdest Du für jedes Paar aus "entf" und "angle" eine andere Anzahl von Punkten erhalten. Richtig?
Mir wird aber nicht klar, welches der Werte-Bereich ist, in dem Du die Intervalle um "entf(i)" und "angle(i)" suchst.
Gruß, Jan
|
|
|
Tusor |

Forum-Fortgeschrittener
|
 |
Beiträge: 71
|
 |
|
 |
Anmeldedatum: 02.07.09
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 06.09.2012, 10:57
Titel:
|
 |
Da hier offenbar keiner weiß wie deine Daten aussehen würde ich mal drum bitten, die drei Variablen hier zur Verfügung zu stellen (aa_sum, entf, an). Dann kann man vielleicht herausfinden, was du genau vor hast. Aber eine reelle Zahl als Index für eine Matrix zu verwenden erscheint mir wirklich unlogisch. Vielleicht liegt da auch schon das Problem?
Also was ist aa_sum? Was bedeuten die Dimensionen von aa_sum? Was ist entf? Was sagt die Länge von entf? Und das gleiche nochmal für an/angle.
Wenn du den wahren Inhalt nicht verraten kannst/darfst dann bitte ich um ein Minimalbeispiel mit anderen Bezeichnungen.
|
|
|
|
Gehe zu Seite 1, 2 Weiter
|
Einstellungen und Berechtigungen
|
|
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| RSS
Hosted by:
Copyright © 2007 - 2025
goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.
|
|