Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Bücher:

Systeme der Regelungstechnik mit MATLAB und Simulink

Studierende:
weitere Angebote

Partner:


Vermarktungspartner


Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Varibale in vorhandene Funktion einbinden

 

Tomsn
Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 10.07.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.07.2020, 14:18     Titel: Varibale in vorhandene Funktion einbinden
  Antworten mit Zitat      
Hallo,
Ich habe gerade erst angefangen mit Matlab zu arbeiten und komme nicht weiter.
Ich habe eine von meiner Uni geschrieben Funktion die Messwerte aus einer mat-Datei ausliest.
Code:
A = x110.Signal.I4.GetData


Dabei ist x110 der "Dateiname" und I4 ist der Strom. In der Datei gibt es weiter Messwerte wie z.B. N4 (Drehzahl) oder M4 ...

Code:
A = x110.Signal.N4.GetData
         A = x110.Signal.M4.GetData


Diese möchte ich nacheinander auslesen. Das funktioniert so weit auch.

Nun habe ich noch weitere Messungen die dann x111 oder x80 heißen.

Ich möchte den neue Namen aber nicht in diesem Fall 3mal eingeben, sondern nur einmal am Anfang.

Wenn ich es mit einer einfachen Variable versuche erkennt Matlab die Funktion nicht mehr.

Welche Möglichkeiten gibt es?

Ich hoffe ich hab das Problem verständlich erklärt Wink
Danke schonmal im Voraus für eure Hilfe Smile
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 21.850
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 10.07.2020, 16:18     Titel:
  Antworten mit Zitat      
Hallo,

das ginge direkt mit eval, ist aber nicht empfehlenswert, weil es schwierig zu debuggen ist und man nicht mehr von eval wegkommt, wenn man einmal damit angefangen hat.

Besser wäre, alle dieser "Dateinamen" (du meinst wohl Variablen??) in einer Struktur, z.B. data zu organisieren. Dann ginge neben
Code:
data.x110.Signal.I4.GetData

auch
Code:
name = 'x110';
data.(name).Signal.I4.GetData


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
 
Tomsn
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 10.07.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.07.2020, 15:22     Titel:
  Antworten mit Zitat      
Hallo,
das funktioniert Smile danke Harald

Wie kann ich nun noch die 110 im folgenden auch variable gestalten? (B ist eine Matrix aus Messwerten)

Code:
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 21.850
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 11.07.2020, 15:30     Titel:
  Antworten mit Zitat      
Hallo,

das läuft aufs gleiche raus, also die Antwort auch hier:
Zitat:
das ginge direkt mit eval, ist aber nicht empfehlenswert, weil es schwierig zu debuggen ist und man nicht mehr von eval wegkommt, wenn man einmal damit angefangen hat.

Die Abhilfe würde ich übrigens genauso machen: A_110 in eine Struktur packen.

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
 
Tomsn
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 10.07.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.07.2020, 13:50     Titel:
  Antworten mit Zitat      
Hallo,
Ok das klappt jetzt auch.

Jetzt hab ich noch ein ähnliches Problem

Code:
[coeff,score,latent,tsquared,explained,mu] = pca(A110_klein)


A110_klein ist eine Matrix auf die ich eine PCA Anwenden möchte. Auch hier will ich die 110 variable gestalten. Wenn ich es wie bei den vorherigen Problemen versuche klappt es nicht oder ich stehe auf dem Schlauch.

grüße
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 21.850
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 12.07.2020, 14:28     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Wenn ich es wie bei den vorherigen Problemen versuche klappt es nicht oder ich stehe auf dem Schlauch.

Dann schreibe bitte genau, was du versuchst und welche Probleme dabei auftreten, sonst kann man dir leider nicht weiterhelfen.

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
 
Tomsn
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 10.07.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.07.2020, 15:45     Titel:
  Antworten mit Zitat      
Hallo,

Code:
z=110;
load([num2str(z),'_klein_5.mat']);
n=(['A',num2str(z)]);
[coeff,score,latent,tsquared,explained,mu] = pca(data.(n)_klein);


mit der Fehlermeldung: Error: File: test.m Line: 4 Column: 58
Invalid text character. Check for unsupported symbol, invisible character, or pasting of
non-ASCII characters.

Sad

grüße
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 21.850
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 12.07.2020, 16:41     Titel:
  Antworten mit Zitat      
Hallo,

Vorschlag:
Code:
n=['A',num2str(z),'_klein'];
[coeff,score,latent,tsquared,explained,mu] = pca(data.(n));


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
 
Tomsn
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 10.07.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.07.2020, 21:52     Titel:
  Antworten mit Zitat      
Dann kommt folgende Fehlermeldung:

Unable to resolve the name data.A74_klein.

Error in test (line 4)
[coeff,score,latent,tsquared,explained,mu] = pca(data.(n));

grüße
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

damit das funktioniert, muss data ein Feld namens A74_klein haben. Hat es aber anscheinend nicht.

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
 
Tomsn
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 10.07.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.07.2020, 22:52     Titel:
  Antworten mit Zitat      
Hallo,

danke für deine Hilfe und Geduld Harald.

Code:
z=110;
load([num2str(z),'_klein_5.mat']);
n=['A',num2str(z),'_klein'];
data.(n)=['A',num2str(z),'_klein'];
[coeff,score,latent,tsquared,explained,mu] = pca(data.(n));


so Hat data ein Feld mit dem Namen und wert A110_klein.
dann erhalte ich die Fehlermeldung:

Error using pca (line 168)
The value of X must be a numeric array.

Error in test (line 5)
[coeff,score,latent,tsquared,explained,mu] = pca(data.(n));

In dem Feld in data müsste ja im Endeffekt die Matrix A110_klein hinterlegt sein. richtig?

Code:
z=110;
load([num2str(z),'_klein_5.mat']);
n=['A',num2str(z),'_klein'];
data.(n)=A110_klein;
[coeff,score,latent,tsquared,explained,mu] = pca(data.(n));


so würde es funktionieren löst aber mein eigentliches Problem nicht Shocked

grüße
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 21.850
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 12.07.2020, 23:14     Titel:
  Antworten mit Zitat      
Hallo,

wenn in der .mat-Datei nur solche Strukturen drin sind, dann am besten gleich
Code:
data = load([num2str(z),'_klein_5.mat']);


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


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