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

Selector - Vektor mittels Index auslesen (Variable Größe)

 

JensBerlin
Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 25.11.19
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.11.2020, 16:05     Titel: Selector - Vektor mittels Index auslesen (Variable Größe)
  Antworten mit Zitat      
Hallo zusammen,

ich möchte aus einem Vektor jeweils einen gewissen Bereich mittels Index (Beginn und Ende variabel) auslesen.

Anschaulich gibt es beispielsweise den Vektor:
Code:
a = [1 2 3 4 5 6 7 8 9 10];


Fall 1:
Code:
Index_unten = 2;
Index_oben = 5;

-> Ergebnis = [2 3 4 5]  (Index one-based)


Fall 2:
Code:
Index_unten = 3;
Index_oben = 4;

-> Ergebnis = [3 4]  (Index one-based)


Folglich sind also sowohl die Grenzen (Index oben bzw. unten) als auch die Länge des Ergebnis-Vektors variabel.

Bei meiner Recherche bin ich auf den Selector Block gestoßen, verstehe allerdings nicht, wie ich diesen Anwendungsfall umsetzen sollte. Der jeweilige Index soll als einstellbare Eingangsgröße realisisert werden.

Vielen Dank für jeden Tipp bzw. hilfreiches Beispiel!
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


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

im Anhang ein Beispiel.
Ich muss aber zugeben, dass ich nicht weiß, ob es insgesamt so eine gute Idee ist, mit Signalen variabler Größe zu arbeiten. Damit das geht, das untere Signal ein Bus-Signal mit zwei Elementen (1. und letzter Index) sein. Zudem muss die Abtastrate diskret sein (im Block für (1:10)' eingetragen).

Grüße,
Harald

Bsp.slx
 Beschreibung:

Download
 Dateiname:  Bsp.slx
 Dateigröße:  22.71 KB
 Heruntergeladen:  273 mal

_________________

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
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.12.2020, 09:56     Titel:
  Antworten mit Zitat      
Hallo Harald,
vielen Dank für deine Antwort und das Beispiel.
Könntest du das Beispiel freundlicherweise abwärtskopatibel zu R2016 zur Verfügung stellen? Aktuell kann ich es leider nicht öffnen.

Gibt es alternativ eine deiner Meinung nach geeignetere Möglichkeit, um aus einem Vektor / einer Matrix einen Teilbereich auszulesen. Analog zu MATLAB beispielsweise
Code:
Matrix(Beginn:Ende,4)
mit Beginn und Ende als Variablen? Mit einer MATLAB Function würde wieder ein variable-sized Signal resultieren.

Viele Grüße
 
Harald
Forum-Meister

Forum-Meister


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

siehe Anhang.
Man kann es sicher auch mit einer MATLAB Function probieren. Wenn es nicht unbedingt sein muss, würde ich aber variable-sized Signals versuchen zu vermeiden.

Grüße,
Harald

Bsp_R2016a.slx
 Beschreibung:

Download
 Dateiname:  Bsp_R2016a.slx
 Dateigröße:  13.92 KB
 Heruntergeladen:  280 mal

_________________

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
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.12.2020, 12:53     Titel:
  Antworten mit Zitat      
Danke Harald! Die Lösung über den Bus Creator ist so simpel, dass ich eigentlich selbst darauf hätte kommen können.

Ich werde versuchen, variable-sized Signals weitestgehend zu vermeiden. An einer Stelle können diese allerdings nicht vermieden werden, weshalb sich noch eine Rückfrage zum Index / Selector Block ergibt.
Wie lässt sich ein / lassen sich mehrere Werte eines variable-sized Signal anhand des Index auslesen? Meine bisherigen Versuche und die entsprechenden Fehlermeldungen habe ich als Bild beigefügt.

Index_variable-sized_Signal.png
 Beschreibung:
Vorgehen und Fehlermeldungen

Download
 Dateiname:  Index_variable-sized_Signal.png
 Dateigröße:  213.78 KB
 Heruntergeladen:  237 mal
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 01.12.2020, 13:03     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Wie lässt sich ein / lassen sich mehrere Werte eines variable-sized Signal anhand des Index auslesen?

war das nicht gerade die ursprüngliche Frage?
Ich weiß nicht, warum du hier einen Multiport Switch verwendest bzw. was du damit erreichen möchtest.

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
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 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.