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

Matlab Problem bei Matirx Auswertung

 

Noy

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.11.2011, 19:26     Titel: Matlab Problem bei Matirx Auswertung
  Antworten mit Zitat      
Hoffe bin hier richtig.

Also ich programmiere nun seit 4 Stunden das erste mal ein Matlab script
und Matlab im allgemienen.

Ich habe hüppelweise Messwerte mit einem LMG aufgenommen und baue nun
ein Script das mir möglichst einfach die Werte aus einer Excel Datei
ausliest, bearbeitet und wieder reinschriebt. Wollte auch erst noch das
es direkt auch Graphen macht aber das funktioniert nicht richtig und
habs dann sein gelassen.

Nun 2 Fragen.

1: Ich habe eine 500x2 Matrix in Matlab 1. Spalte Frequenz 2.Spalte
Impedanz

Da ich nun aber nicht alle Frequenzen in meinem Diagramm haben möchte,
würde ich gerne die Matrix Filtern. Also z.B. die 10 Größten
Impedanzwerte mit passender Frequenz.

Wie sähe dazu der Code aus ich finde bzw verstehe die Syntax noch nicht
so ganz zu dieser max() funktion.

2: Kann man in Excel einen ablauf "vorklicken" das daraus ein Script
erstellt wird, was mir die Graphen macht (Werte liegen immer an der
gleichen Stelle). Oder weiß jemand wie es in Matlab richtig geht? (EXCEL
2007) also xlsgraph() geht nicht... Sad


Und das würde mir die arbeit verleichtern wie kann ich z.b: eine .csv
Datei benutzen und dann als Excel Datei wieder speichern?


Achja mein Code bisher:



Code:
%

[fileName filePath] = uigetfile('*', 'Select data file', '.');
if filePath==0, error('None selected!'); end
File =[filePath fileName];
sheet= fileName(1:end-5);


FREQ=xlsread(File,sheet,'A6:A505');

IL1=xlsread(File,sheet,'B6:B505');
IL1PHI=xlsread(File,sheet,'H6:H505');
IL1PHIRAD=IL1PHI*(pi/180);
IL1KOMP=(IL1.*cos(IL1PHIRAD))+(IL1.*sin(IL1PHIRAD))*1i;

IL2=xlsread(File,sheet,'B6:B505');
IL2PHI=xlsread(File,sheet,'H6:H505');
IL2PHIRAD=IL2PHI*(pi/180);
IL2KOMP=(IL2.*cos(IL2PHIRAD))+(IL2.*sin(IL2PHIRAD))*1i;

IL3=xlsread(File,sheet,'B6:B505');
IL3PHI=xlsread(File,sheet,'H6:H505');
IL3PHIRAD=IL3PHI*(pi/180);
IL3KOMP=(IL3.*cos(IL3PHIRAD))+(IL3.*sin(IL3PHIRAD))*1i;

IU=xlsread(File,sheet,'B6:B505');
IUPHI=xlsread(File,sheet,'H6:H505');
IUPHIRAD=IUPHI*(pi/180);
IUKOMP=(IU.*cos(IUPHIRAD))+(IU.*sin(IUPHIRAD))*1i;

IV=xlsread(File,sheet,'B6:B505');
IVPHI=xlsread(File,sheet,'H6:H505');
IVPHIRAD=IVPHI*(pi/180);
IVKOMP=(IV.*cos(IVPHIRAD))+(IV.*sin(IVPHIRAD))*1i;

IW=xlsread(File,sheet,'B6:B505');
IWPHI=xlsread(File,sheet,'H6:H505');
IWPHIRAD=IWPHI*(pi/180);
IWKOMP=(IW.*cos(IWPHIRAD))+(IW.*sin(IWPHIRAD))*1i;



UL1=xlsread(File,sheet,'N6:N505');
UL1PHI=xlsread(File,sheet,'T6:T505');
UL1PHIRAD=UL1PHI*(pi/180);
UL1KOMP=UL1.*cos(UL1PHIRAD)+(UL1.*sin(UL1PHIRAD))*1i;

UL2=xlsread(File,sheet,'N6:N505');
UL2PHI=xlsread(File,sheet,'T6:T505');
UL2PHIRAD=UL2PHI*(pi/180);
UL2KOMP=UL2.*cos(UL2PHIRAD)+(UL2.*sin(UL2PHIRAD))*1i;

UL3=xlsread(File,sheet,'N6:N505');
UL3PHI=xlsread(File,sheet,'T6:T505');
UL3PHIRAD=UL3PHI*(pi/180);
UL3KOMP=UL3.*cos(UL3PHIRAD)+(UL3.*sin(UL3PHIRAD))*1i;

UU=xlsread(File,sheet,'N6:N505');
UUPHI=xlsread(File,sheet,'T6:T505');
UUPHIRAD=UUPHI*(pi/180);
UUKOMP=UU.*cos(UUPHIRAD)+(UU.*sin(UUPHIRAD))*1i;

UV=xlsread(File,sheet,'N6:N505');
UVPHI=xlsread(File,sheet,'T6:T505');
UVPHIRAD=UVPHI*(pi/180);
UVKOMP=UV.*cos(UVPHIRAD)+(UV.*sin(UVPHIRAD))*1i;

UW=xlsread(File,sheet,'N6:N505');
UWPHI=xlsread(File,sheet,'T6:T505');
UWPHIRAD=UWPHI*(pi/180);
UWKOMP=UW.*cos(UWPHIRAD)+(UW.*sin(UWPHIRAD))*1i;



ZL1KOMP=UL1KOMP./IL1KOMP;
ZL1BET=abs(ZL1KOMP);
ZL1VERS=angle(ZL1KOMP);
ZL1KOMPREAL=real(ZL1KOMP);
ZL1KOMPIM=imag(ZL1KOMP);


ZL2KOMP=UL2KOMP./IL2KOMP;
ZL2BET=abs(ZL2KOMP);
ZL2VERS=angle(ZL2KOMP);
ZL2KOMPREAL=real(ZL2KOMP);
ZL2KOMPIM=imag(ZL2KOMP);


ZL3KOMP=UL3KOMP./IL3KOMP;
ZL3BET=abs(ZL3KOMP);
ZL3VERS=angle(ZL3KOMP);
ZL3KOMPREAL=real(ZL3KOMP);
ZL3KOMPIM=imag(ZL3KOMP);


ZUKOMP=UUKOMP./IUKOMP;
ZUBET=abs(ZUKOMP);
ZUVERS=angle(ZUKOMP);
ZUKOMPREAL=real(ZUKOMP);
ZUKOMPIM=imag(ZUKOMP);


ZVKOMP=UVKOMP./IVKOMP;
ZVBET=abs(ZVKOMP);
ZVVERS=angle(ZVKOMP);
ZVKOMPREAL=real(ZVKOMP);
ZVKOMPIM=imag(ZVKOMP);


ZWKOMP=UWKOMP./IWKOMP;
ZWBET=abs(ZWKOMP);
ZWVERS=angle(ZWKOMP);
ZWKOMPREAL=real(ZWKOMP);
ZWKOMPIM=imag(ZWKOMP);

ZKOMALL=[FREQ ZL1KOMP];
%ZKOMBIG=


xlswrite(File,{'Frequenz'} ,'matlab','A1');
xlswrite(File,FREQ ,'matlab','A2');


xlswrite(File,{'ZL1 Komplex'} ,'matlab','B1');
xlswrite(File,{'ZL1 Realteil'} ,'matlab','C1');
xlswrite(File,{'ZL1 Imaginärteil'} ,'matlab','D1');
xlswrite(File,ZL1KOMP ,'matlab','B2');
xlswrite(File,ZL1KOMPREAL ,'matlab','C2');
xlswrite(File,ZL1KOMPIM ,'matlab','D2');



xlswrite(File,{'ZL2 Komplex'} ,'matlab','E1');
xlswrite(File,{'ZL2 Realteil'} ,'matlab','F1');
xlswrite(File,{'ZL2 Imaginärteil'} ,'matlab','G1');
xlswrite(File,ZL2KOMP ,'matlab','E2');
xlswrite(File,ZL2KOMPREAL ,'matlab','F2');
xlswrite(File,ZL2KOMPIM ,'matlab','G2');


xlswrite(File,{'ZL3 Komplex'} ,'matlab','H1');
xlswrite(File,{'ZL3 Realteil'} ,'matlab','I1');
xlswrite(File,{'ZL3 Imaginärteil'} ,'matlab','J1');
xlswrite(File,ZL3KOMP ,'matlab','H2');
xlswrite(File,ZL3KOMPREAL ,'matlab','I2');
xlswrite(File,ZL3KOMPIM ,'matlab','J2');


xlswrite(File,{'ZU Komplex'} ,'matlab','K1');
xlswrite(File,{'ZU Realteil'} ,'matlab','L1');
xlswrite(File,{'ZU Imaginärteil'} ,'matlab','M1');
xlswrite(File,ZUKOMP ,'matlab','K2');
xlswrite(File,ZUKOMPREAL ,'matlab','L2');
xlswrite(File,ZUKOMPIM ,'matlab','M2');


xlswrite(File,{'ZV Komplex'} ,'matlab','N1');
xlswrite(File,{'ZV Realteil'} ,'matlab','O1');
xlswrite(File,{'ZV Imaginärteil'} ,'matlab','P1');
xlswrite(File,ZVKOMP ,'matlab','N2');
xlswrite(File,ZVKOMPREAL ,'matlab','O2');
xlswrite(File,ZVKOMPIM ,'matlab','P2');


xlswrite(File,{'ZW Komplex'} ,'matlab','Q1');
xlswrite(File,{'ZW Realteil'} ,'matlab','R1');
xlswrite(File,{'ZW Imaginärteil'} ,'matlab','S1');
xlswrite(File,ZWKOMP ,'matlab','Q2');
xlswrite(File,ZWKOMPREAL ,'matlab','R2');
xlswrite(File,ZWKOMPIM ,'matlab','S2');
 


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.502
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 30.11.2011, 20:32     Titel:
  Antworten mit Zitat      
Hallo,

Wenn Vektoren Impedanz und Frequenz gegeben sind:
Code:
[sorted, ind] = sort(Impedanz, 'descend');
gewaehlteFrequenzen = Frequenz(ind(1:10));


Die zweite Frage verstehe ich nicht. Willst du automatisch einen Graphen in einer Excel-Datei erzeugen, oder was stellst du dir vor?

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

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.11.2011, 20:53     Titel:
  Antworten mit Zitat      
Also in dem Code:


ZKOMALL=[FREQ ZL1KOMP]; //hier habe ich eine Matrix erstellt mit
Spalte Frequenz und der Komplexen Impedanz ZL1

Nun möchte ich das er mir die 10 größten Komplexen Impedanzen mit der dazu passenden Frequenz in eine neue Matrix schreibt.

Wie geht das?
Deinen Code oben versteh cih leider nciht da ich nciht weiß was ich wo von der Matrix Eintragen muss.

Die Vektoren gibts auch einzeln aber dann habe ich ja praktisch nciht die passende Frequenz zu der Impedanz. Meine Frequenz ist praktisch meine Positions Nummer...

Später soll halt ein Graph erstellt werden x: Frequenz y:Impedanz .


Die 2. Frage hast du richtig verstanden Smile
Ich habe halt unmengen Daten und würde gerne das der mir direkt oder halt auf Knopfdruck immer von den selben Daten (Spalte/Zeile) einen Graphen baut. Damit cih nicht jedesmal alles auswählen muss..
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.502
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 30.11.2011, 21:10     Titel:
  Antworten mit Zitat      
Hallo,

es sind nur 2 Zeilen Code. Ein wenig Bemühen, das zu verstehen, würde ich eigentlich schon erwarten.

Wenn die Vektoren die Spalten aus deiner Matrix sind, klappt das - in deinem Fall wohl FREQ und ZL1KOMP.
Alternativ kannst du dir den Befehl SORTROWS ansehen.

Zum Schreiben der Figure nach Excel siehe z.B.
http://www.mathworks.de/matlabcentr.....xchange/24424-xlswritefig

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

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.11.2011, 21:56     Titel:
  Antworten mit Zitat      
Also ich habe eben bevor ich den anderen Post geschireben habe das mal in mein Script eingesetzt und zwar so :

[sorted, ind] = sort(ZL1KOMP, 'descend');
gewaehlteFrequenzen = FREQ(ind(1:10));

und habe mir dann die Vektoren die dabei entstehen angesehen.
Der gewaehlteFrequenzen Vektor enthält auch 10 Werte, schätze das sind die 10 größten Impedanzen oder? Weil die 10 Größten Frequenzen sind es nciht.

Aber die Vektoren sorted und ind sind immernoch 500x1 groß. Und somit fehlt mir ja irgendwie das passende gegenstück zu den 10 Werten in gewaehlteFrequenzen oder?
Und was das 'descend' heißt weiß ich nicht sort() ist ja wohl sortieren.
Ich komm mit den unterschiedlichen Klammerarten und den wann ein komma und so nicht klar. Ich kann nur C.... Sad
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.502
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 30.11.2011, 22:08     Titel:
  Antworten mit Zitat      
Hallo,

lies dir doch mal die Dokumentation zu SORT durch, dann weißt du auch, was ,'descend' bedeutet.
gewaehlteFrequenzen sind, wie der Name schon sagt, Frequenzen - nämlich die zu den größten Impedanzen.
Die Impedanzen stehen der Reihe nach in sorted, die 10 größten Impedanzen wären also
Code:
gewaehlteImpedanzen = sorted(1:10);


Wenn du Probleme mit der Syntax hast, solltest du mit einer grundlegenden Einarbeitung anfangen.

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

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.12.2011, 00:06     Titel:
  Antworten mit Zitat      
Hey vielen Dank!!!

Ich habe eben die ganze Zeit irgendwie um 80 Ecken gedacht...


Habe mir mal einiges in der Hilfe durchgelesen und nun verstanden wie du das in dem Code gelöst hast. Funktioniert 1A.

Habe es auch mit den Diagrammen geschafft Smile
 
Noy

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.12.2011, 19:59     Titel:
  Antworten mit Zitat      
So,

soweit hab ich alles hinbekommen nun muss ich nur noch die Graphen so anpassen das es ordentlich aussieht. Und da liegt nun mein Problem.
So grob habe ich in der Matlab Hilfe gefunden wie ich die Achsen beschriften kann.(Weiß noch nicht ob es geht)

Das was mir nun noch fehlt ist.

Titel für den Graphen.

Und wie ich die X-Achse Logarithmisch und eventuell auch die y-Achse darstellen kann. Das Problem dabei ist das es in bar() sein soll.
Also wie kann ich bei Graphen mit bar() wenigstens die x- Achse logarithmisch darstellen? (10er log)

Achja und angenommen ich möchte eine x-Achse haben und dann 3 Vektoren in y Richtung abbilden geht das:

bar(FREQ,{U,I,Z});

?
Und dann vll noch jeweils anders einfärben...
 
Noy

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.12.2011, 21:26     Titel:
  Antworten mit Zitat      
Hat sich erledigt hab den Knopf für Generate Code gefunden in der Plot GUI Smile

hehe.

Jezz noch bissel tunen und fertig bin ich Smile
 
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.