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

Messreihe unter verwendung von forschleife untersuchen

 

Roose_Bolton
Forum-Anfänger

Forum-Anfänger


Beiträge: 14
Anmeldedatum: 18.06.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.06.2013, 10:33     Titel: Messreihe unter verwendung von forschleife untersuchen
  Antworten mit Zitat      
Hallo allerseits,

ich bin ein absoluter neueinsteiger in matlab.

folgendes Problem habe ich:
Ich habe eine Messreihe von jeweils 7986 x-, sowie y-werten. Diese Werte wurden schon als vector eingelesen und mit der namen y und x versehen. Dabei enthält x die zeiteinheiten und y die unterschiedlichen werte einer geschwindigkeit.

Nun möchte ich unter Verwendung einer forschleife den y vector durchlaufen lassen und mir die werte ausgeben lassen, welche beispielsweise eine höher Abweichung als e = 5 von dem voherigen Wert haben.

Da ich leider keine Idee und keine Erfahrung habe, wäre ich über jeden Vorschlag dankbar... Rolling Eyes
Private Nachricht senden Benutzer-Profile anzeigen


Kascho
Forum-Century

Forum-Century


Beiträge: 195
Anmeldedatum: 24.03.10
Wohnort: Jena
Version: R2008b ... :(
     Beitrag Verfasst am: 18.06.2013, 10:55     Titel:
  Antworten mit Zitat      
Hi Roose_Bolton und Herzlich Willkommen im Forum.

Schau dir mal

Code:


an. Danach einfach prüfen ob der Wert nach größer 5 ist.

Hoffe das hilft dir weiter.

MfG, Kascho
Private Nachricht senden Benutzer-Profile anzeigen
 
Roose_Bolton
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 14
Anmeldedatum: 18.06.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.06.2013, 11:00     Titel:
  Antworten mit Zitat      
erstmal vielen dank für die schnelle anwort. Wink

Allerdins hilft mir dass nicht wirklich weiter, da ich eine forschleife verwenden soll.
Private Nachricht senden Benutzer-Profile anzeigen
 
Kascho
Forum-Century

Forum-Century


Beiträge: 195
Anmeldedatum: 24.03.10
Wohnort: Jena
Version: R2008b ... :(
     Beitrag Verfasst am: 18.06.2013, 11:26     Titel:
  Antworten mit Zitat      
Hmm, sehe da keinen Vorteil, klingt nach ner Hausaufgabe?! Wink . Aber vllt. so in der Art:
Code:

for i=1:length(y)

ydiff(i)=y(i+1)-y(i);

end



gruß
Private Nachricht senden Benutzer-Profile anzeigen
 
Roose_Bolton
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 14
Anmeldedatum: 18.06.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.06.2013, 12:27     Titel:
  Antworten mit Zitat      
danke, das sieht doch schon ganz gut aus Very Happy

eine bitte hätte ich noch....
wie müsste nun der code heißen, um die nummern der ydiff-werte, welche größer als 5 sind, in einem vektor anzeigen zu lassen
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 18.06.2013, 12:39     Titel: Re: Messreihe unter verwendung von forschleife untersuchen
  Antworten mit Zitat      
Hallo Roose_Bolton,

Bitte zeige uns noch, was Du bisher versucht hast und erkläre welche Schwierigkeiten dabei aufgetreten sind. Es ist immer einfacher und passt immer besser zu Deinen Wünschen, wenn wir vorhandenen Code verbessern.

Die Strategie ist:
1. FOR-Schleife über alle Werte ab dem zweiten.
2. Testen ob die Differenz größer ist.
3. Dies irgendwie verwenden.

Matlab's Stärke ist aber gerade, dass dies auch ohne FOR-Schleife funktioniert, was viel Tipp-Arbeit und meistens viel Laufzeit spart. Das bereits vorgeschlagene DIFF ist auf jeden Fall die beste Methode in Matlab und Du solltest es gerade zum Üben unbedingt auch damit mal versuchen.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Roose_Bolton
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 14
Anmeldedatum: 18.06.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.06.2013, 12:28     Titel:
  Antworten mit Zitat      
Das Problem hat sich schon erledigt. Hab den folgenden Code benutzt:

Code:

for i=1:7000
    y_a(i)=y(i+1,1)-y(i,1);
end

% Werte y_ab mit Abweichung e finden
e=5;    
find(y_a>e);
z1=ans;

find(y_a<-e);
z2=ans;

y_ab=sort([z1,z2]);
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 19.06.2013, 23:22     Titel:
  Antworten mit Zitat      
Hallo Roose_Bolton,

Die explizite Verwendung von "ans" kann z.B. beim Debuggen sehr tückisch werden. Besser:
Code:
y_a = zeros(1, 7000);  % pre-allocate!!!
for i = 1:7000  % Hat y wirklich 7001 Werte?
    y_a(i) = y(i+1,1)-y(i,1);
end

% Werte y_ab mit Abweichung e finden
e = 5;    
y_ab = find(abs(y_a) > e);

Gruß, 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.