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

Aus einer Matrix vier machen

 

Tensao
Forum-Anfänger

Forum-Anfänger


Beiträge: 32
Anmeldedatum: 27.04.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.04.2010, 10:04     Titel: Aus einer Matrix vier machen
  Antworten mit Zitat      
Hallo

Bei einer Steifigkeitsuntersuchung am Getriebe wird der Drehmoment T und der zugehöriger Verdrehwinkel phi gemessen. Die Messung startet bei
T=0Nm und geht bis Tmax, dann von Tmax bis 0Nm, dann von 0=Nm bis -Tmax, und von -Tmax bis 0Nm. Es entsteht eine Hysteresekurve, der Winkel beim runterfahren ist unterschiedlich als beim Hochfahren. Die Messdaten befinden sich in einer 2 Spaltenmatrix ( T und phi) mit [m]=Anzahl der Messpunkte als Anzahl der Zeilen.

Ich will aus dieser Matrix für die Auswertung vier Matrizen machen, siehe vier Schritte.. Der Moment bzw Winkel steigen gleichmäßig an.
Nun brauche ich eine Schleife, die mir 4 Matrizen aus einer macht.

Die Schleife soll überprüfen ob Ti < Ti+1 bzw phi(i)<phi(i+1) ist, wenn nicht sind wir schon im nächsten Bereich angelangt und dann die Matrix für der ersten Bereich anlegen.....

Danke für die Hilfe komm selber nicht weiter Sad(
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 28.04.2010, 11:12     Titel:
  Antworten mit Zitat      
Hallo,

wenn ich das richtig verstehe, möchtest du die Stellen finden, an denen die Differenz von einem Wert zum nächsten > 0 ist. Das geht z.B. so:

Code:
indizes = diff(T) > 0;


Damit hast du die Sprungpunkte und musst dann noch die Matrix trennen. Sag aber bitte erstmal, ob dir das soweit weiterhilft.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Tensao
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 32
Anmeldedatum: 27.04.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.04.2010, 11:34     Titel:
  Antworten mit Zitat      
Das hilft mir, ist ein Ansatz, aber da ich mit Matlab nicht oft gearbeitet habe, weiß ich nicht wie ich das automatisieren soll, die Anzahl der Messpunkte kann variieren.

Matrix trennen mit reshape??

mit diff kriege ich binäre matrix 0 oder 1, wie sag ich jetzt, dass Matlab für alle 1 und 0 mehrere Vektoren erstellt

0 1 2 3 2 1 0 -1 -2 -3 -2 -1 0 mit diff in 0 und 1

ich brauche a (0 1 2 3) a1 (3 2 1 0) a2 (0 -1 -2 -3) a3 (-3 -2 -1 0)

danke
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 28.04.2010, 11:39     Titel:
  Antworten mit Zitat      
Hallo,

jetzt erscheint mir eher, dass du bei Maxima und bei Minima trennen möchtest. Aber warum wird bei 0 getrennt?

Wenn die einzelnen Signalteile gleich lang sind, ist RESHAPE definitiv hilfreich; ansonsten weniger.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Tensao
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 32
Anmeldedatum: 27.04.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.04.2010, 11:45     Titel:
  Antworten mit Zitat      
und wie sieht es aus in Code, bei Null trennen ist ne Option da es bei Null anfängt, egal wo wie trenne ich und erstelle Vektoren ,

wenn nicht reshape, dann ?? Messpunkte sind gleich im negativen un positiven Bereich.

ich versteh, aber umsetzen in Matlab kann ich nicht
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 28.04.2010, 12:00     Titel:
  Antworten mit Zitat      
Hallo

Vielleicht so:

Code:

A    = [0 1 2 3 2 1 0 -1 -2 -3 -2 -1 0]
pos = find(max(A)==A | min(A)==A | A==0)
D   = arrayfun(@(m,n){A(:,m:n)}, pos(1:end-1),pos(2:end))
[a a1 a2 a3] = deal(D{:})
 
Private Nachricht senden Benutzer-Profile anzeigen
 
Tensao
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 32
Anmeldedatum: 27.04.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.04.2010, 12:05     Titel:
  Antworten mit Zitat      
Wie lange muss man sich mit Matlab beschäftigen bis man das alleine hinkriegt???

ist genau das was ich brauche danke schön
Private Nachricht senden Benutzer-Profile anzeigen
 
Tensao
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 32
Anmeldedatum: 27.04.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.04.2010, 16:01     Titel:
  Antworten mit Zitat      
Hallo schon wieder, habe erst jetzt versucht den Vorschlag auf meine Ergebnisse anzuwenden, es entsteht aber ein Problem, meine Daten sind nicht exakt Maximaler und Minimale Wert, sonder z.B 2,999 und 3,1111 oder -2,9999.... und Null ist gar nicht vorhanden, um Null Punkt zu finden habe ich interpoliert, mit find gibt er mir nur einen Max bzw Min und 0 findet er gar nicht

also ich glaube mit diff (T>0) geht es mit meinen Daten besser, wie kann ich jetzt aus meinem Vektor vier machen,

T0.09 1.009 2.11 2.9999 2.08 1.1 0.07)........................... 7 Zahlen

mit diff kriege ich aber

X1 1 1 0 0 0) 6 Zahlen, also nur stelle wo diff T<0, umwandeln kann ich diese Matrix X ja nicht
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 28.04.2010, 16:12     Titel:
  Antworten mit Zitat      
Hallo

und wenn man die Zahlen für die Suche rundet?
Code:

 A=[0.09 1.009 2.11 2.9999 2.08 1.1 0.07]

rA= round(A)
pos = find(max(rA)==rA | min(rA)==rA | rA==0)
D   = arrayfun(@(m,n){A(:,m:n)}, pos(1:end-1),pos(2:end))

[a1 a2] = deal(D{:})

 


Upps, du wolltest in 4 Geteilt haben, aber wie stellst du dir das vor, weil in diesem nach deinem Regel sehe ich nur 2
Private Nachricht senden Benutzer-Profile anzeigen
 
Tensao
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 32
Anmeldedatum: 27.04.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.04.2010, 16:21     Titel:
  Antworten mit Zitat      
das ist Anfang des Vektors
-0.0521
0.4074
0.8375
1.1855
1.5995
.............. dann maximaler positiver Wert des Momentes
39.6578
39.9799
40.2332
40.6558
40.6099
40.5982
40.5863
......... und so weiter bis zu positiven Werten

also wenn ich runde kann es sein, dass ich ja mehrere 0Werte und Max......Min.. bekomme oder???.
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 28.04.2010, 16:49     Titel:
  Antworten mit Zitat      
Ja das kann passieren, hängt davon wie dicht deine Daten aufgenommen werden
Private Nachricht senden Benutzer-Profile anzeigen
 
Tensao
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 32
Anmeldedatum: 27.04.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.04.2010, 16:52     Titel:
  Antworten mit Zitat      
und dann kriege ich ja mehrere vektoren und nicht die anzahl die ich brauche, was soll ich dann machen

tut mir leid wenn ich auf die nerven gehe Smile
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 28.04.2010, 20:17     Titel:
  Antworten mit Zitat      
Vielleicht Extrema mit dieser Funktion suchen:
http://www.mathworks.com/matlabcent.....2275-extrema-m-extrema2-m

Code:

A    = [0 1  2 3 2  1 0 -1  -2 -3 -2  -1 0]  
rA   =A;
rA(rA<0)= rA(rA<0)*-1
[amax,imax,amin,imin]= extrema(rA);
pos = unique([imax,imin])
D   = arrayfun(@(m,n){A(:,m:n)}, pos(1:end-1),pos(2:end))

[a1 a2 a3 a4] = deal(D{:})
 
Private Nachricht senden Benutzer-Profile anzeigen
 
Tensao
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 32
Anmeldedatum: 27.04.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.04.2010, 12:23     Titel:
  Antworten mit Zitat      
Danke schön

sieht sehr vielversprechend aus

MfG
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.