Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   
Bücher:

Fachkräfte:
weitere Angebote

Partner:


Vermarktungspartner


Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Excel-, CSV-, Text Datei in Matlab per Skript öffnen

 

Marten
Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 09.10.19
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.10.2019, 15:42     Titel: Excel-, CSV-, Text Datei in Matlab per Skript öffnen
  Antworten mit Zitat      
Schönen guten Tag zusammen,

ich habe einige Erfahrungen mit VBA und muss mich jetzt mit Matlab auseinander setzen.

Ich habe das Problem, dass ich Beispielsweise Exceldateien per Skript öffnen möchte, aber nicht eine bestimmte sondern irgendeine und dann auch nur bestimmte Spalten.

Am Ende möchte ich halt mit Funktionen etc. einen Code schreiben, den abspielen und es soll sich ein Fenster öffnen in den ich dann die jeweilige Datei auswähle, öffne und der Code weiter seine Arbeit macht hinsichtlich Auswertung.
Kann mir da jemand weiter helfen?

Gruß
Marten
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 20.404
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2014a
     Beitrag Verfasst am: 09.10.2019, 17:45     Titel:
  Antworten mit Zitat      
Hallo,

Dateiauswahl mit uigetfile .
Falls es noch andere Fragen gibt, bitte genauer beschreiben.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Marten
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 09.10.19
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.10.2019, 20:22     Titel:
  Antworten mit Zitat      
Harald hat Folgendes geschrieben:
Hallo,

Dateiauswahl mit uigetfile .
Falls es noch andere Fragen gibt, bitte genauer beschreiben.

Grüße,
Harald


Hallo Harald,

vorab danke dir. Das habe ich auch schon heraus gefunden. Nur möchte ich bestimmte Zeilen importiert haben. Sagen wir mal Spalte A, B, C und D.
Ich fand das bei VBA immer eigentlich einfach und hab das dort auch schon fertig das Makro. Jetzt wollte ich das mit Matlab heute starten und war teilweise am verzweifeln :/.

Gruß
Marten
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 20.404
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2014a
     Beitrag Verfasst am: 09.10.2019, 20:38     Titel:
  Antworten mit Zitat      
Hallo,

readtable sollte helfen.

Zitat:
Nur möchte ich bestimmte Zeilen importiert haben.

Und welche? Die ersten n? Die geraden? Die, bei denen irgendwas bestimmtes passiert?

Zitat:
Sagen wir mal Spalte A, B, C und D.

Das klingt nach "es kann auch anders sein". Wie sollen denn die Spalten gefunden werden? Gibt es Spaltenüberschriften in den Dateien?

Die Frage ist sehr, sehr vage. Das macht es schwierig zu helfen.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Marten
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 09.10.19
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.10.2019, 21:38     Titel:
  Antworten mit Zitat      
Harald hat Folgendes geschrieben:
Hallo,

readtable sollte helfen.

Zitat:
Nur möchte ich bestimmte Zeilen importiert haben.

Und welche? Die ersten n? Die geraden? Die, bei denen irgendwas bestimmtes passiert?

Zitat:
Sagen wir mal Spalte A, B, C und D.

Das klingt nach "es kann auch anders sein". Wie sollen denn die Spalten gefunden werden? Gibt es Spaltenüberschriften in den Dateien?

Die Frage ist sehr, sehr vage. Das macht es schwierig zu helfen.

Grüße,
Harald


Also in der einen Spalte steht Zeit, daneben Temperatur, daneben Masse und daneben Heizrate (ist nur ein Wert). Diese würde ich gerne importieren und zwar so, das wenn ich das Skript abspiele ich die jeweilige Datei aussuchen kann öffne und fertig. Dann wollte ich direkt ein Plot(Masse gegen Zeit) und plot(Masse gegen Temperatur) auftragen. Wenn ich das schon mal habe wäre mir sehr geholfen und den Rest würde ich schon irgendwie mich durch wurschteln oder bei Bedarf hier im Forum nachfragen, wenn es nicht zu viel verlangt ist🙈.

Danke und Grüße
Marten
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 20.404
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2014a
     Beitrag Verfasst am: 09.10.2019, 21:47     Titel:
  Antworten mit Zitat      
Hallo,

uigetfile kennst du, jetzt auch readtable.

Im einfachsten Fall:
Code:
[f, p] = uigetfile();
T = readtable(fullfile(p, f));
plot(T.Zeit, T.Masse)
figure
scatter(T.Temperatur, T.Masse)


Gut möglich, dass das nicht so direkt funktioniert, aber ich kenne leider den Aufbau der Dateien nicht. Antworten auf meine Fragen wie z.B. "Gibt es Spaltenüberschriften" wären hilfreich.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Marten
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 09.10.19
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.10.2019, 21:53     Titel:
  Antworten mit Zitat      
Harald hat Folgendes geschrieben:
Hallo,

uigetfile kennst du, jetzt auch readtable.

Im einfachsten Fall:
Code:
[f, p] = uigetfile();
T = readtable(fullfile(p, f));
plot(T.Zeit, T.Masse)
figure
scatter(T.Temperatur, T.Masse)


Gut möglich, dass das nicht so direkt funktioniert, aber ich kenne leider den Aufbau der Dateien nicht. Antworten auf meine Fragen wie z.B. "Gibt es Spaltenüberschriften" wären hilfreich.

Grüße,
Harald


Ich hatte das vorhin mal nur versucht mit uigetfile aber der hat nur den Filenamen importiert Sad.. naja hab auch heute die ersten Std damit verbracht erst. Ja die Überschriften sind Zeit, Temperatur, Masse, Heizrate.. das meinte ich ja damit sorry 😅

Gruß
Marten
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 20.404
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2014a
     Beitrag Verfasst am: 09.10.2019, 22:19     Titel:
  Antworten mit Zitat      
Hallo,

ich hatte dir ja als nächstes readtable vorgeschlagen. Dann weiteren Code.
Hast du davon etwas probiert? Wenn es Probleme gab, dann welche?

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Marten
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 09.10.19
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.10.2019, 22:26     Titel:
  Antworten mit Zitat      
Harald hat Folgendes geschrieben:
Hallo,

ich hatte dir ja als nächstes readtable vorgeschlagen. Dann weiteren Code.
Hast du davon etwas probiert? Wenn es Probleme gab, dann welche?

Grüße,
Harald


Ich werde das morgen direkt ausprobieren, weil ich kein Matlab leider auf meinen Rechner habe. Werde dann Bescheid geben, aber bin keiner Guten Dinge 😅😂. Das hat mich heute so genervt 😠

Danke nochmal Smile

Marten
Private Nachricht senden Benutzer-Profile anzeigen
 
Marten
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 09.10.19
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.10.2019, 11:05     Titel:
  Antworten mit Zitat      
Harald hat Folgendes geschrieben:
Hallo,

ich hatte dir ja als nächstes readtable vorgeschlagen. Dann weiteren Code.
Hast du davon etwas probiert? Wenn es Probleme gab, dann welche?

Grüße,
Harald


also habe es jetzt ausprobiert und nun funktioniert es in dem ich gesagt habe, was in welcher Spalte steht und wie er welchen Wert umrechnen soll. nur hab ich jetzt selbstverständlich das nächste Problem :-/

ich wollte Matlab sagen, das es mich bei durchführen des Skriptes nach Intervallgrenzen abfragt, so wie ich es in VBA habe. Bin schon seit 8 uhr am Googln wie verrückt, aber ich finde nichts :-/
das ist mein VBA Code:

'Bereich mit Reduktionsreaktion finden

i = ez - 1
RedAnf = CDbl(InputBox("Geben Sie die untere Intervallgrenze (Temperatur [°C] für die Reduktionsreaktion (Massenabnahme) abzgl. einer Sicherheit ein"))
Do
i = i + 1
Loop Until ActiveSheet.Cells(i, 2).Value >= RedAnf

mmin = ActiveSheet.Cells(i, 3)
mmax = ActiveSheet.Cells(i, 3)
temp = ActiveSheet.Cells(i, 2)
RedEnde = CDbl(InputBox("Geben Sie die obere Intervallgrenze (Temperatur [°C] für die Reduktionssreaktion (Massenabnahme) zzgl. einer Sicherheit ein"))
Do
i = i + 1
If ActiveSheet.Cells(i, 3).Value <= mmin Then
mmin = ActiveSheet.Cells(i, 3).Value
mminz = i
End If
If ActiveSheet.Cells(i, 3).Value >= mmax Then
mmax = ActiveSheet.Cells(i, 3).Value
mmaxz = i
End If
Loop Until ActiveSheet.Cells(i, 2) >= RedEnde


'Abschneiden des Reduktionsbereiches
For i = lz To mmaxz Step -1
ActiveSheet.Rows(i).Delete
Next i
For i = mminz To ez Step -1
ActiveSheet.Rows(i).Delete
Next i

dann wollte ich einen Umsatz berechnen, aber leider ist das nicht so ,öglich wie in VBA :-/ langsam verzweifel ich echt.

'Umsatzberechnung
ReDim Preserve werte(ds, 4)
For i = 0 To ds - 1
werte(i, 4) = (werte(i, 3) - mmin) / (mmax - mmin)
If werte(i, 4) = 0 Then
werte(i, 4) = 0.000001
End If
If werte(i, 4) = 1 Then
werte(i, 4) = 0.999999
End If
Next i

hat da jemand eine Idee wie ich das umschreiben kann... Also meine Temperatur steht in der 2. Spalte und meine Masse in der 3. Spalte :-/

danke falls jemand eine Idee hat :-/... hab gesehen, dasss man auch VBA codes in Matlab laufen lassen kann aber ich will das neu in Matlab haben und auch nachvollziehen können natürlich Very Happy.

Gruß

Marten
Private Nachricht senden Benutzer-Profile anzeigen
 
Marten
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 09.10.19
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.10.2019, 11:19     Titel:
  Antworten mit Zitat      
Marten hat Folgendes geschrieben:


'Umsatzberechnung
ReDim Preserve werte(ds, 4)
For i = 0 To ds - 1
werte(i, 4) = (werte(i, 3) - mmin) / (mmax - mmin)
If werte(i, 4) = 0 Then
werte(i, 4) = 0.000001
End If
If werte(i, 4) = 1 Then
werte(i, 4) = 0.999999
End If
Next i


Das Problem hab ich jetzt über Parameter (Molmassen) und das Verhältnis der Reaktionsgleichung gelöst Very Happy. ist zwar nicht soooo suverän aber fürht zum selben ergebnis Wink
Private Nachricht senden Benutzer-Profile anzeigen
 
Marten
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 09.10.19
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.10.2019, 13:04     Titel:
  Antworten mit Zitat      
da ich verschiedene Messungen habe (Edukte), gibt es da ne Möglichkeit das ich bei abspielen des Skriptes Matlab dazu aufzufordern, dass es mich fragt welches Edukt ich habe, da die jeweiligen Formeln für die Umsatzberechnung verschieden sind.

also so:
1. Skript abspielen
2. Matlab fragt mich welches Edukt
3. ich sage Beispielsweise Edukt A mit der Partikelgröße xyz

dann soll mir Matlab halt die jeweilige zuständige Formel verwenden

Grüße
Marten

Edit:

XA1 = 1 - (( X(:,3)-0.69937383) ./0.30062617); % Berechnet den Hämatit Umsatz

XA2 = 1 - (( X(:,3)-0.69937383) ./0.30062617); % Berechnet den Maghämit Umsatz

XA3 = 1 - (( X(:,3)-0.72359016) ./0.27640984); % Berechnet den Magnetit Umsatz

XA4 = 1 - (( X(:,3)-0.77724426) ./0.22275574); % Berechnet den Wüstit Umsatz

XA5 = 1 - (( X(:,3)-0.6284605) ./0.3715395); % Berechnet den Goethit Umsatz

XA6 = 1 - (( X(:,3)-0.48202911) ./0.51797089); % Berechnet den Eisencarbonat Umsatz

Das sind meine Berechnungsformeln... jetzt möchte ich halt das Matlab mich fragt: Welche formel soll ich benutzen, am besten so das ich auf ein Name des Stoffes drücken muss und eine Partikelgröße eintippen muss
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 20.404
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2014a
     Beitrag Verfasst am: 10.10.2019, 20:26     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
'Umsatzberechnung
ReDim Preserve werte(ds, 4)
For i = 0 To ds - 1
werte(i, 4) = (werte(i, 3) - mmin) / (mmax - mmin)
If werte(i, 4) = 0 Then
werte(i, 4) = 0.000001
End If
If werte(i, 4) = 1 Then
werte(i, 4) = 0.999999
End If
Next i


Wenn ich das richtig sehe, wäre entsprechender MATLAB Code:
Code:
tmp = (werte(:,3) - mmin) / (mmax - mmin);
tmp(tmp == 0) = 0.000001;
tmp(tmp == 1) = 0.999999;
werte(:,4) = tmp;

Ist doch eleganter als VBA, oder?

Zur neuen Frage bezogen auf zwei Auswahlen:
Code:
v1 = [0.69937383, 0.72359016];
v2 = [0.72359016, 0.27640984];
Edukte = {'Maghämit', 'Magnetit'};
idx = menu('Edukt', Edukte);
XA = 1 - (X(:,3)-v1(idx)) ./ v2(idx);

Das kannst du auch mit 6 oder mehr Edukten machen.

Zitat:
am besten so das ich auf ein Name des Stoffes drücken muss und eine Partikelgröße eintippen muss

Der Name des Stoffes ist wohl das Edukt? Wo aber hier eine Partikelgröße ins Spiel kommt, ist mir schleierhaft.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Marten
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 09.10.19
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.10.2019, 21:06     Titel:
  Antworten mit Zitat      
Harald hat Folgendes geschrieben:
Hallo,

Zitat:
'Umsatzberechnung
ReDim Preserve werte(ds, 4)
For i = 0 To ds - 1
werte(i, 4) = (werte(i, 3) - mmin) / (mmax - mmin)
If werte(i, 4) = 0 Then
werte(i, 4) = 0.000001
End If
If werte(i, 4) = 1 Then
werte(i, 4) = 0.999999
End If
Next i


Wenn ich das richtig sehe, wäre entsprechender MATLAB Code:
Code:
tmp = (werte(:,3) - mmin) / (mmax - mmin);
tmp(tmp == 0) = 0.000001;
tmp(tmp == 1) = 0.999999;
werte(:,4) = tmp;

Ist doch eleganter als VBA, oder?

Zur neuen Frage bezogen auf zwei Auswahlen:
Code:
v1 = [0.69937383, 0.72359016];
v2 = [0.72359016, 0.27640984];
Edukte = {'Maghämit', 'Magnetit'};
idx = menu('Edukt', Edukte);
XA = 1 - (X(:,3)-v1(idx)) ./ v2(idx);

Das kannst du auch mit 6 oder mehr Edukten machen.

Zitat:
am besten so das ich auf ein Name des Stoffes drücken muss und eine Partikelgröße eintippen muss

Der Name des Stoffes ist wohl das Edukt? Wo aber hier eine Partikelgröße ins Spiel kommt, ist mir schleierhaft.

Grüße,
Harald


Abend Harald Smile,

Danke dir ich probiere das morgen mal mit dem Umsatzcode aus Smile.
Ich bin auch schon ein Stück weiter als gestern.. ich brauch die Partikelgrösse später Smile.. mein Code wird mega lang werden so wie es aussieht 😓😓😓.. aber dann hab ich mir locker 6 Monate Auswertung gespart Smile. Ich meld mich morgen noch mal, wenn es für dich ok ist. Hab paar „answer“ codes mit eingefügt Wink.. ist schon ne coole Sache, die es aber bei VBA auch gibt 🤪😅

Gruß
Marten
Private Nachricht senden Benutzer-Profile anzeigen
 
Marten
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 09.10.19
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.10.2019, 13:28     Titel:
  Antworten mit Zitat      
Harald hat Folgendes geschrieben:
Hallo,

Zitat:
'Umsatzberechnung
ReDim Preserve werte(ds, 4)
For i = 0 To ds - 1
werte(i, 4) = (werte(i, 3) - mmin) / (mmax - mmin)
If werte(i, 4) = 0 Then
werte(i, 4) = 0.000001
End If
If werte(i, 4) = 1 Then
werte(i, 4) = 0.999999
End If
Next i


Wenn ich das richtig sehe, wäre entsprechender MATLAB Code:
Code:
tmp = (werte(:,3) - mmin) / (mmax - mmin);
tmp(tmp == 0) = 0.000001;
tmp(tmp == 1) = 0.999999;
werte(:,4) = tmp;

Ist doch eleganter als VBA, oder?

Zur neuen Frage bezogen auf zwei Auswahlen:
Code:
v1 = [0.69937383, 0.72359016];
v2 = [0.72359016, 0.27640984];
Edukte = {'Maghämit', 'Magnetit'};
idx = menu('Edukt', Edukte);
XA = 1 - (X(:,3)-v1(idx)) ./ v2(idx);

Das kannst du auch mit 6 oder mehr Edukten machen.

Zitat:
am besten so das ich auf ein Name des Stoffes drücken muss und eine Partikelgröße eintippen muss

Der Name des Stoffes ist wohl das Edukt? Wo aber hier eine Partikelgröße ins Spiel kommt, ist mir schleierhaft.

Grüße,
Harald


Hallo Harald,

wäre das so richtig?

v1 = [0.69937383, 0.30062617];
v2 = [0.69937383, 0.30062617];
v3 = [0.72359016, 0.27640984];
v4 = [0.77724426, 0.22275574];
v5 = [0.6284605, 0.3715395];
v6 = [0.48202911, 0.51797089];
Edukte = {'Hämatit', 'Maghämit', 'Magnetit', 'Wüstit', 'Goetith', 'Eisencarbonat'};
idx = menu('Edukt', Edukte);
XA = 1 - ((X(:,3)-v1(idx)) ./ v2(idx));

v1 sind die Parameter von Hämatit, v2 von Maghämit und so weiter... problem ist, dass ich nicht verstehe wieso v1(idx) ./ v2(idx)...
für mich ist nicht ersichtlich auch wenn ich auf den Wüstit button Klicke wieso er mit v4 rechenn sollte?

gruß
Marten
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite 1, 2  Weiter

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
.


goMatlab ist ein Teil des goForen-Labels
goForen.de goMATLAB.de goLaTeX.de


 Impressum  | Nutzungsbedingungen  | Datenschutz  | Werbung/Mediadaten | Studentenversion | FAQ | goMatlab RSS Button RSS


Copyright © 2007 - 2019 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
Partner: LabVIEWforum.de

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.