|
|
Ziffer aus einer Zahl lesen |
|
Autodidakt |
Forum-Anfänger
|
|
Beiträge: 39
|
|
|
|
Anmeldedatum: 08.02.14
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 08.07.2020, 07:12
Titel: Ziffer aus einer Zahl lesen
|
|
Hallo Leute,
ich muss in Simulink aus einer Zahl
Bsp: 4681012
Ziffern auslesen und neue zahlen daraus machen.
Wenn obriges Bsp eingelesen wurde, brauche ich die erste Ziffer (4) und die nächsten drei Ziffern (681). Ich will also am Ende die Zahl 4 und die Zahl 681 haben und weiter verarbeiten, der Rest wird ignorieren. Sollte machbar sein, aber als jemand der vornehmlich miit LabVIEW arbeitet bin ich gerade etwas ratlos.
Gruß
|
|
|
|
|
T16 |
Forum-Century
|
|
Beiträge: 145
|
|
|
|
Anmeldedatum: 31.01.18
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 08.07.2020, 07:33
Titel:
|
|
Schamlos geklaut von: https://de.mathworks.com/matlabcent.....r-in-to-individual-digits
Einfacher verständlich, aber ineffizienter, ist eine Konvertierung in einen String (num2str). Da ein String nichts anderes ist als ein Char-Array, kannst du mit str(1), str(2) etc. auf die einzelnen Ziffern zugreifen, musst sie aber evtl. wieder in integer zurückkonvertieren.
|
|
|
Autodidakt |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 39
|
|
|
|
Anmeldedatum: 08.02.14
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 08.07.2020, 07:53
Titel:
|
|
Okay, wie binde ich das in ein Simulinkmodel ein? Sorry hab keinen Plan.
|
|
|
T16 |
Forum-Century
|
|
Beiträge: 145
|
|
|
|
Anmeldedatum: 31.01.18
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 08.07.2020, 08:09
Titel:
|
|
Mit dem Matlab-function Block kannst du beliebige Matlabfunktionen in Simulink einbinden.
|
|
|
Autodidakt |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 39
|
|
|
|
Anmeldedatum: 08.02.14
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 08.07.2020, 10:04
Titel:
|
|
Ok, noch einmal für Nullchecker wie mich. Ich hab in meinem Simulinkmodel jetzt den Matlabfunctionblock, im Kopf steht das was reinkommt und was rausgeht. Der Eingang ist immer ein uint16. Mich interessiert aber nur die erste Ziffer und die Ziffern 2-4 die eine eigene Zahl egeben sollen.
Der Block an sich funktioniert, die Platzhalterrechnungen "Eingang +- 500" geben korrekte Zahlenwerte aus. Ich habe aber weiter keinen Plan wie ich vorgehen soll um mein gewünschtes Ergebnis zu erreichen.
Die auskommentierte Umwandlung in String funktioniert funktioniert ohne Fehlermeldung, braucht aber soviel Zeit, dass ich diese nicht weiter verfolgen will.
|
|
|
T16 |
Forum-Century
|
|
Beiträge: 145
|
|
|
|
Anmeldedatum: 31.01.18
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 08.07.2020, 10:56
Titel:
|
|
Einfach meinen code reinkopieren und anstelle von num deine Eingangsvariable benutzen. Außerdem musst du noch die drei Ziffern zu einer dreistelligen Zahl zusammensetzen, dafür multiplizierst du Ziffer 2 mit 100, 3 mit 10 und 4 mit 1 und addierst alles auf:
So ungefähr, habs nicht getestet.
|
|
|
Autodidakt |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 39
|
|
|
|
Anmeldedatum: 08.02.14
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 08.07.2020, 11:19
Titel:
|
|
|
|
|
Bekomme Fehlermeldungen des Todes......... ok, wenn jemand weiß wie es richtig geht, wäre ich dankbar, dannhätte ich was dazugelernt. Mein Problem hab ich mittlerweile mit Modulu gelöst. Auf jeden Fall vielen Dank.
Zitat: |
Simulink does not have enough information to determine output sizes for this block. If you think the errors below are inaccurate, try specifying types for the block inputs and/or sizes for the block outputs.
Component:MATLAB Function | Category:Coder error
Function 'arrayfun' is not supported for code generation. Consider adding coder.extrinsic('arrayfun') at the top of the function to bypass code generation.
Function 'MATLAB Function' (#35.63.132), line 3, column 8:
"arrayfun(@(x) mod(floor(Eingang/10^x),10),floor(log10(Eingang)):-1:0)"
Launch diagnostic report.
Component:MATLAB Function | Category:Coder error
Undefined function or variable 'digits'. The first assignment to a local variable determines its class.
Function 'MATLAB Function' (#35.145.151), line 4, column 13:
"digits"
Launch diagnostic report.
Component:MATLAB Function | Category:Coder error
Undefined function or variable 'digits'. The first assignment to a local variable determines its class.
Function 'MATLAB Function' (#35.167.173), line 5, column 12:
"digits"
Launch diagnostic report.
Component:MATLAB Function | Category:Coder error
Errors occurred during parsing of MATLAB function 'MATLAB Function'
Component:MATLAB Function | Category:Coder error
Simulink cannot determine sizes and/or types of the outputs for block 'MATLAB Function' due to errors in the block body, or limitations of the underlying analysis. The errors might be inaccurate. Fix the indicated errors, or explicitly specify sizes and/or types for all block outputs.
Component:MATLAB Function | Category:Coder error
Simulink cannot determine sizes and/or types of the outputs for block 'MATLAB Function' due to errors in the block body, or limitations of the underlying analysis. The errors might be inaccurate. Fix the indicated errors, or explicitly specify sizes and/or types for all block outputs.
Component:Simulink | Category:Model errorOpen
Error occurred in 'call_stats_block2/MATLAB Function'. |
|
|
|
T16 |
Forum-Century
|
|
Beiträge: 145
|
|
|
|
Anmeldedatum: 31.01.18
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 08.07.2020, 11:36
Titel:
|
|
Spannend, bei mir läuft es ohne Probleme durch (2020a, siehe Bild).
Vermutl. funktioniert das mit deiner Matlabversion nicht, probier doch mal diese (ebenfalls schamlos von der o.g. Seite geklaute) Variante ohne arrayfun um die Zahl zu zerlegen:
Beschreibung: |
|
Download |
Dateiname: |
Unbenannt.JPG |
Dateigröße: |
213.52 KB |
Heruntergeladen: |
277 mal |
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
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
| 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.
|
|