|
bono |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 18.11.2009, 12:26
Titel: Matrix
|
 |
kann mir jemand bei dem befehl "circshift" helfen???
ich will die zeilen meiner matrix jeweils um 0.05 schritten verschieben, das funktioniert auch aber nicht mit jeder zahl, z.b. diese gehen nicht
0.15; 0.3; 0.35; 0.6; 0.7; 0.95; ...
bekomme immer eine fehlermeldung
??? Error using ==> circshift at 38
Invalid shift type: must be a finite, nonsparse, real integer vector.
bla bla
verstehe nicht warum das manchmal geht und machmal nicht???
hat jemand eine idee?
vielen dank
|
|
|
|
|
Andreas Goser |

Forum-Meister
|
 |
Beiträge: 3.654
|
 |
|
 |
Anmeldedatum: 04.12.08
|
 |
|
 |
Wohnort: Ismaning
|
 |
|
 |
Version: 1.0
|
 |
|
|
 |
|
Verfasst am: 18.11.2009, 12:49
Titel:
|
 |
|
|
bono |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 18.11.2009, 12:59
Titel:
|
 |
hey
danke für die schnelle antwort
leider bring mich das nicht weiter. ich will das bild nicht drehen sondern nur die zeilen verschieben. was die fehlermeldung angeht, so ist das auch ein integer, da ich meine eigabe durch 0.05 teile.
|
|
|
Andreas Goser |

Forum-Meister
|
 |
Beiträge: 3.654
|
 |
|
 |
Anmeldedatum: 04.12.08
|
 |
|
 |
Wohnort: Ismaning
|
 |
|
 |
Version: 1.0
|
 |
|
|
 |
|
Verfasst am: 18.11.2009, 15:15
Titel:
|
 |
Durch verschiedene numerische Effekte kann nicht gewährleistet werden, dass Werte die sehr nah an einem ganzzahligen Wert liegen als ganzzahlig interpretiert werden. Es sollte dort eine klare Rundung oder Datentypkonvertierung durchgeführt werden.
Um Zeilen zu verschieben braucht man aber nur Matrix-Standardoperationen. CIRCSHIFT ist entweder nicht geeignet oder ein Overkill.
Andreas
|
|
|
bono |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 18.11.2009, 15:58
Titel:
|
 |
aber wenn ich 0.3 / 0.05 = 6 dann kommt eine gerade ganze zahl raus, man muss nicht runden. warum klappt das den, wenn ich z.b. 0.25 / 0.05 = 5 eingebe?
wenn CIRCSHIFT nicht geeignet ist, was kann ich stattdessen nehmen?
|
|
|
Andreas Goser |

Forum-Meister
|
 |
Beiträge: 3.654
|
 |
|
 |
Anmeldedatum: 04.12.08
|
 |
|
 |
Wohnort: Ismaning
|
 |
|
 |
Version: 1.0
|
 |
|
|
 |
|
Verfasst am: 19.11.2009, 11:03
Titel:
|
 |
|
|
bono |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 19.11.2009, 11:17
Titel:
|
 |
hallo andreas, danke noch mal.
die hilfe hilft mir nicht weil auf englisch
na ja, und mit meinem problem bin ich auch nicht weiter, weil ich immer noch nicht verstehe wo eigentlich das problem liegt
|
|
|
bono |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 19.11.2009, 12:25
Titel:
|
 |
ich habe das jetzt mal vereinfacht ausprobiert
es kommt immer die gleiche fehlermeldung:
??? Error using ==> circshift at 38
Invalid shift type: must be a finite, nonsparse, real integer vector.
Error in ==> TEST at 4
B(i,: ) = circshift(A(i,: ),[0,zahl/0.05]);
wenn ich z.b. zahl = 0.2 eingebe, dann funktionierts. warum???
ich komme überhaupt nicht weiter
|
|
|
Andreas Goser |

Forum-Meister
|
 |
Beiträge: 3.654
|
 |
|
 |
Anmeldedatum: 04.12.08
|
 |
|
 |
Wohnort: Ismaning
|
 |
|
 |
Version: 1.0
|
 |
|
|
 |
|
Verfasst am: 19.11.2009, 13:02
Titel:
|
 |
Folgender Code wir den Effekt erklären:
a sollte nach normalem Verständnis 2,4,6 usw. ergeben. Tut es auch, aber eben nicht immer 100%ig exakt. Auf meinem Rechner sind z.B.
a =
6.000000000000001
und
a =
11.999999999999998
Wenn immer die Abweichung von der ganzen Zahl zu gross ist, ist es CIRCSHIFT unmöglich die Zahl als Ganzzahl zu interpretieren. Der Code könnte dann mit ROUND funktionieren:
Andreas
|
|
|
bono |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 19.11.2009, 14:24
Titel: berlin
|
 |
vielen dank Andreas, das hat jetzt funktioniert.
aber ich verstehe immer noch nicht, warum der computer die zahl nicht als ganzes sieht, sondern irgendwas rundet und das dann auch nicht mit jeder zahl? aber dafür weis ich viel zu wenig vom computer.
noch mal danke
|
|
|
|
|
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 - 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.
|
|