Vektoren vergleichen < Matlab < Mathe-Software < Mathe < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 16:50 Mo 09.06.2008 | Autor: | mido |
Hallo,
in meinem Matlab Programm muss ich von einem Vektor a = [mm] \vektor{0.5\\ 3} [/mm] (in Wirklichkeit etwas groesser) wenn der Zahlenwert eines Elements groesser als 1 ist = 1 in das Ergebis schreiben. Das heisst, das Ergebnis bei diesem Vektor sollte dann [mm] \vektor{0.5\\ 1} [/mm] sein.
Dazu habe ich einfach eine if Bedingung geschrieben
if a > 1
b = 1
else
b = a
end
Leider funktioniert das so nicht. Wahrscheinlich vergleicht Matlab nicht elementweise.
Kann mir da jemand helfen.
Gruesse
|
|
|
|
> Hallo,
>
> in meinem Matlab Programm muss ich von einem Vektor a =
> [mm]\vektor{0.5\\ 3}[/mm] (in Wirklichkeit etwas groesser) wenn der
> Zahlenwert eines Elements groesser als 1 ist = 1 in das
> Ergebis schreiben. Das heisst, das Ergebnis bei diesem
> Vektor sollte dann [mm]\vektor{0.5\\ 1}[/mm] sein.
>
> Dazu habe ich einfach eine if Bedingung geschrieben
> if a > 1
> b = 1
> else
> b = a
> end
>
> Leider funktioniert das so nicht. Wahrscheinlich vergleicht
> Matlab nicht elementweise.
> Kann mir da jemand helfen.
>
> Gruesse
>
Matlab kann bestimmt schon mit der if-Bedingung
" if a > 1 "
nichts anfangen. Du willst die einzelnen Komponenten
des Vektors mit 1 vergleichen. Wie die genaue Bezeichnung
dafür in MatLab ist, weiss ich leider nicht, aber ich denke
ungefähr so:
> if a(1) > 1
> b(1) = 1
> else
> b(1) = a(1)
> end
> if a(2) > 1
> b(2) = 1
> else
> b(2) = a(2)
> end
|
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 17:34 Mo 09.06.2008 | Autor: | mido |
Hallo,
in meinem Matlab Programm muss ich von einem Vektor a = [mm] \vektor{0.5\\ 3} [/mm] (in Wirklichkeit etwas groesser) wenn der Zahlenwert eines Elements groesser als 1 ist = 1 in das Ergebis schreiben. Das heisst, das Ergebnis bei diesem Vektor sollte dann [mm] \vektor{0.5\\ 1} [/mm] sein.
Dazu habe ich einfach eine if Bedingung geschrieben
if a > 1
b = 1
else
b = a
end
Leider funktioniert das so nicht. Wahrscheinlich vergleicht Matlab nicht elementweise.
Kann mir da jemand helfen.
Gruesse
Vielen Dank. Dachte mir schon, dass es so aehnlich gehen muss. Das Problem ist leider nur, dass der Vektor nicht zwei, sondern 8760 Elemente hat. Gibt es einen Befehl, damit ich die Elemente einzeln vergleichen lassen kann, ohne das 8760 mal schreiben zu muessen.
Danke
|
|
|
|
|
> Vielen Dank. Dachte mir schon, dass es so aehnlich gehen
> muss. Das Problem ist leider nur, dass der Vektor nicht
> zwei, sondern 8760 Elemente hat. Gibt es einen Befehl,
> damit ich die Elemente einzeln vergleichen lassen kann,
> ohne das 8760 mal schreiben zu muessen.
ich nehme mal an, dass es auch in MatLab For - Schleifen gibt...
Al-Chw.
|
|
|
|
|
Hallo,
was spricht denn gegen folgende Lösung:
b = min(a, 1);
???
Ansonsten wird das elementweise Vergleichen ohne for-Schleife so realisiert:
b = a; b(b>1) = 1;
Gruß
Martin
|
|
|
|