WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

bestimmte Elemente eines Vektors 0 setzen

 

Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.07.2010, 19:15     Titel: bestimmte Elemente eines Vektors 0 setzen
  Antworten mit Zitat      
Nabend,

wie kann ich aus eines Vektor Elemente, die z.B. <0 Null sind mit Null überschreiben ohne das ich sie lösche?

Mit einer Schleife kein Problem

Code:

x = [1 -5 8 3 9 -4 2 -3];
for i = 1:length(x)
 if x(i) < 0
   x(i) = 0;
 end
end
 


aber umständlicher und Zeitraubender geht es wohl nichts mehr...

Gruß und nen schönes WE...


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 23.07.2010, 19:36     Titel: Re: bestimmte Elemente eines Vektors 0 setzen
  Antworten mit Zitat      
Hallo Anonymous,

Code:

x = [1 -5 8 3 9 -4 2 -3];
x(x < 0) = 0;
 


Zitat:
aber umständlicher und Zeitraubender geht es wohl nichts mehr...

Doch: Exportiere die Daten in ein File, ausdrucken, Zahlen kleiner Null rot anstreichen, einscannen, finden foter Bereiche, Ziffern erkennen, konvertieren. Oder warte - zwischen durch per Post zu einem unabhängigen Gutachter schicken. :-)

Aber wieder ernst: Andere Möglichkeit:
Code:


Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.07.2010, 16:20     Titel:
  Antworten mit Zitat      
Hallo Jan,

danke klappt beides und dank tic toc sieht man die Rechenzeitersparnis. Ich bin derzeit dabei mich von der Schleifen, auf die Vektorbasierte Rechnung unzugewöhnen, habe da noch nen Schmankel:

zwei 'Vektoren sollen miteinander mulipliziert werden. Eigentlich kein Problem.

Code:

x = [1 -5 8 3 9 -4 2 -3];
y = [2 5 8 -3 2 -7 8 -6];
for i = 1:length(x)
 z(i) = x(i)*y(i);
end
 


das dauert.. Versuch der Abhilfe:

Code:

z = x*y
 


liefert Fehler:
Code:

??? Error using ==> mtimes
Inner matrix dimensions must agree.
 


Warum? Vektoren sind gleich lang!

Gruß
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 24.07.2010, 17:54     Titel:
  Antworten mit Zitat      
Hallo Anonymous,

Anonymous hat Folgendes geschrieben:

Code:

liefert Fehler:
Code:

??? Error using ==> mtimes
Inner matrix dimensions must agree.
 


"Gleich lange Vektoren" reichen nicht, wie die Fehlermeldung bereits sagt. Wenn es Probleme mit MTIMES gibt, hilft "help mtimes" beim Verstehen des Fehlers weiter. Dort findest Du u.A.: "See also times". Dann schaue dazu also noch "help times" an.

Ich erwähne das, weil es hier im Forum oft vorkommt, dass Fragen gestellt werden, die HELP und DOC sehr gut -und viel schneller- beantworten können.

"A*B" ist eine Matritzen-Multiplikation. Es ist also das DOT-Produkt zwischen den Zeilen von A mit den Spalten von B. Also müssen diese beiden die gleiche Anzahl von Elementen haben.
Versuche mal dies:
Code:
a = [1, 2];
b = [3; 4];
a * b
b * a
a .* b'
a' .* b
 

Wenn man noch nicht gelernt hat mit Matritzen zu rechnen, ist das sicherlich etwas verwirrend. Wenn man aber z.B. im Physik-Studium dauernd mit Matritzen rechnet, beginnt man Matlab für diese kompakte Schreibweise zu lieben.

Viel Spaß mit Matlab, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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 | goMatlab RSS Button 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.