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

Zahlen vereniigen (z.B.: 1 + 1 = 11)

 

RoyalFlush
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 82
Anmeldedatum: 27.10.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.04.2010, 12:50     Titel: Zahlen vereniigen (z.B.: 1 + 1 = 11)
  Antworten mit Zitat      
Hallo!

Kann mit bitte jemand sagen wie ich in Matlab Zahlen aneinanderfügen kann?

z.B. so wie 1+1=11 oder 24+24 = 2424

Ich habe eine Möglichkeit und die sieht so aus:
Code:

Zahl1 = 10;
Zahl2 = 15;
Ergebnis = str2double(strcat(num2str(Zahl1), num2str(Zahl2)));
 

Dabei kommt zwar als Ergebnis 1015 raus, allerdings brauche ich das in einer Schleife die häufig durchlaufen wird und da ist num2str, strcat, und str2double eine absolute Bremse!!!

Gibts da einen einfacheren Weg?

Vielen Dank
Private Nachricht senden Benutzer-Profile anzeigen


denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 14.04.2010, 13:02     Titel:
  Antworten mit Zitat      
Hallo

so vielleicht:
Code:

Zahl1 = 10;
Zahl2 = 15;
Ergebnis = sscanf(sprintf('%d%d',Zahl1,Zahl2),'%d');
 
Private Nachricht senden Benutzer-Profile anzeigen
 
RoyalFlush
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 82
Anmeldedatum: 27.10.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.04.2010, 13:08     Titel:
  Antworten mit Zitat      
Danke für die schnelle Antwort!

Super, das ist schon mal 5-6 mal schneller!!!

Gehts vielleicht noch irgendwie schneller? Das ganze ist Teil eines recht grpßen Projektes und ich will bei solchen Dingen nicht viel Rechenzeit opfern.


Dankeschön!!
Private Nachricht senden Benutzer-Profile anzeigen
 
outsider
Forum-Meister

Forum-Meister


Beiträge: 806
Anmeldedatum: 03.09.07
Wohnort: München
Version: R2012b
     Beitrag Verfasst am: 14.04.2010, 13:32     Titel:
  Antworten mit Zitat      
noch eine Lösung:

die ultimativste und allerschnellste Lösung, natürlich, wenn "länge" einer Zahl constant ist.
Code:
Zahl1 = 10;
Zahl2 = 15;
Ergebnis = Zahl1*100+Zahl2;


Wenn es nicht bekannt ist, dann kann man so vorgehen
(3x schneller als die Lösung von Denny)
Code:
Zahl1 = 10;
Zahl2 = 15;
Ergebnis = Zahl1*10^(floor(log10(Zahl1))+1)+Zahl2;



MfG
Private Nachricht senden Benutzer-Profile anzeigen
 
RoyalFlush
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 82
Anmeldedatum: 27.10.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.04.2010, 13:45     Titel:
  Antworten mit Zitat      
outsider hat Folgendes geschrieben:
noch eine Lösung:

die ultimativste und allerschnellste Lösung, natürlich, wenn "länge" einer Zahl constant ist.
Code:
Zahl1 = 10;
Zahl2 = 15;
Ergebnis = Zahl1*100+Zahl2;


Wenn es nicht bekannt ist, dann kann man so vorgehen
(3x schneller als die Lösung von Denny)
Code:
Zahl1 = 10;
Zahl2 = 15;
Ergebnis = Zahl1*10^(floor(log10(Zahl1))+1)+Zahl2;



MfG


Vielen Dank für die Antwort!

Deine 2te Methode hat allerdings einen Fehler, nämlich wenn z.B. Zahl1=107 und Zahl2=15 ist dann kommt 107015 raus statt 10715!

Kann man das ändern, denn das würde so nämlich wirklich schnell laufen!

Danke nochmals.
Private Nachricht senden Benutzer-Profile anzeigen
 
outsider
Forum-Meister

Forum-Meister


Beiträge: 806
Anmeldedatum: 03.09.07
Wohnort: München
Version: R2012b
     Beitrag Verfasst am: 14.04.2010, 14:08     Titel:
  Antworten mit Zitat      
Stimmt - kleiner Abtippfehler von mir (es sollte Zahl2 statt Zahl1 im Ausdruck stehen)...
Eigentlich könntest Du den Fehler auch selbst beheben, wenn Du die Lösung nachvollzogen hättest. Wink

richttige Lösung:
Code:
Zahl1 = 107;
Zahl2 = 15;
Ergebnis = Zahl1*10^(floor(log10(Zahl2))+1)+Zahl2

Ergebnis =

       10715



MfG
Private Nachricht senden Benutzer-Profile anzeigen
 
RoyalFlush
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 82
Anmeldedatum: 27.10.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.04.2010, 14:19     Titel:
  Antworten mit Zitat      
outsider hat Folgendes geschrieben:
Stimmt - kleiner Abtippfehler von mir (es sollte Zahl2 statt Zahl1 im Ausdruck stehen)...
Eigentlich könntest Du den Fehler auch selbst beheben, wenn Du die Lösung nachvollzogen hättest. Wink

richttige Lösung:
Code:
Zahl1 = 107;
Zahl2 = 15;
Ergebnis = Zahl1*10^(floor(log10(Zahl2))+1)+Zahl2

Ergebnis =

       10715



MfG


Vielen Dank, funktioniert wirklich schnell! Very Happy
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 - 2025 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.