Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Bücher:

Modellbildung und Simulation hochdynamischer Fertigungssyste

Fachkräfte:
weitere Angebote

Partner:


Vermarktungspartner


Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Neue Abfragestuktur

 

Vaati
Forum-Anfänger

Forum-Anfänger


Beiträge: 21
Anmeldedatum: 12.02.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.07.2018, 09:41     Titel: Neue Abfragestuktur
  Antworten mit Zitat      
Hallo,

ich stehe gerade etwas auf dem schlauch oder mir fehlt einfach die passende Funktion.
Ich habe z.B: folgenden Code

Code:

anzahlSignale = 5;

Signal1 = data(1,1);
Signal2 = data(2,1);
Signal3 = data(3,1);
Signal4 = data(4,1);
Signal5 = data(5,1);
 


Meine Variable "anzahlSignale" kann sich allerdings ändern, z.B. zu
Code:
anzahlSignale = 3;


Dann möchte ich, dass nur die ersten drei Signal1/2/3 berechnet werden. Eine mögliche Lösung wäre es ja, vor jede Signal Berechnung ein if-statement zu packen...z.B. so

Code:

anzahlSignale = 3;

if anzahlSignale > 0;
Signal1 = data(1,1);
end

if anzahlSignale > 1;
Signal2 = data(2,1);
end

if anzahlSignale > 2;
Signal3 = data(3,1);
end

if anzahlSignale > 3;
Signal4 = data(4,1);
end

if anzahlSignale > 4;
Signal5 = data(5,1);
end
 


Das erscheint mir allerdings extrem unsauber. Daher jetzt meine Frage. Wie kann ich es optimieren, dass nur die Anzahl an Signalen berechnet wird, die in meine Variable "anzahlSignale" angegeben sind.

Danke schonmal für euren Input.
Grüße
Private Nachricht senden Benutzer-Profile anzeigen


J0nas
Forum-Century

Forum-Century


Beiträge: 208
Anmeldedatum: 10.09.15
Wohnort: ---
Version: ab 2016a
     Beitrag Verfasst am: 17.07.2018, 09:53     Titel:
  Antworten mit Zitat      
Hallo Vaati,

eine Möglichkeit wäre assignin zu verwenden:

Code:

anzahlSignale = 5;
for i = 1:anzahlSignale
    assignin ('base',['Signal' num2str(i)], data(i,1));
end


Falls du die Signale nicht alle unbedingt als einzelne Variablen brauchst würde sich auch ein Vektor anbieten:

Code:
anzahlSignale = 5;
Signal = data(1:anzahlSignale,1);


Grüße
Jonas
_________________

1.) Ask Google & Matlab Documentation
2.) Ask gomatlab.de & Technical Support of MathWorks
3.) Go mad, your problem is unsolvable
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 23.003
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 17.07.2018, 09:57     Titel:
  Antworten mit Zitat      
Hallo,

ich würde dringend zur zweiten Möglichkeit raten.
Wenn man einmal mit assignin etc. anfängt, bleibt einem im weiteren Verlauf nicht erspart, weiter mit solchen Krücken zu arbeiten.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 21
Anmeldedatum: 12.02.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.07.2018, 10:31     Titel:
  Antworten mit Zitat      
Danke für eure Antworten!

Mit assignin bin ich schonmal auf die Nase gefallen, davon lasse ich mittlerweile lieber die Finger Very Happy .

Ich bräuchte die Signal schon als einzelne Variablen. Gibt es da noch eine Alternative?

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

Forum-Meister


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

Zitat:
Ich bräuchte die Signal schon als einzelne Variablen.

Warum? Ich habe da noch nie einen triftigen Grund dafür gesehen. Das heißt natürlich nicht, dass es nicht doch einen gibt.

Zitat:
Gibt es da noch eine Alternative?

Keine mir bekannte, die automatisiert mehrere Variablen erzeugt.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 21
Anmeldedatum: 12.02.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.07.2018, 11:19     Titel:
  Antworten mit Zitat      
Harald hat Folgendes geschrieben:
Hallo,

Zitat:
Ich bräuchte die Signal schon als einzelne Variablen.

Warum? Ich habe da noch nie einen triftigen Grund dafür gesehen. Das heißt natürlich nicht, dass es nicht doch einen gibt.


Ja, warum eigentlich...? Alle Signale in eine Matrix packen und dann einfach nur die Index ansprechen. Das sollte funktionieren und ist 1000x sauberer und kürzer im Code.
Tut mir Leid Harald, dass auch ich dir keinen triftigen Grund dafür nennen kann Wink
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

braucht dir nicht Leid zu tun... das hätte quasi mein Weltbild erschüttert ;)

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