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

Matlab rundet Zahlen nicht auf Null

 

kurtisblow
Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 18.03.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.03.2016, 11:37     Titel: Matlab rundet Zahlen nicht auf Null
  Antworten mit Zitat      
Hi

Ich versuche ein paar Homogene-Transformationsmatrizen zu berechnen, jedoch spielt Matlab nicht ganz mit. Wenn ich einen syms value b einsetze, werden die Zahlen, die eigentlich in der Grössenordnung 1e-16 sind, nicht zu null (b ist nicht ein Faktor der Zahlen). Im Anhang ist ein Bild davon. Wenn ich hingegen normale Zahlen einsetze funktioniert das einwandfrei. Jemand eine Idee?



Gruss Kurt

homognous_trafo.png
 Beschreibung:

Download
 Dateiname:  homognous_trafo.png
 Dateigröße:  19.02 KB
 Heruntergeladen:  424 mal
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


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

warum sollte MATLAB runden, wenn du nirgends einen entsprechenden Befehl verwendest?

Poste deinen Code doch bitte statt ein Bild davon zur Verfügung zu stellen.
Es sieht so aus, als ob die Einträge von rothz(pi) nicht genau +/-1 oder 0 sind, und somit auch das Ergebnis der Multiplikation nicht.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
kurtisblow
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 18.03.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.03.2016, 13:23     Titel:
  Antworten mit Zitat      
Hallo Harald

Die verwendeten Funktionen sind folgende:

Code:

function R = rotzh(alpha)
%ROTX  return homogeneous rotation matrix around Z by ALPHA
%
%   R = ROTZ(ALPHA)
%
% See also: ROTX, ROTY, ROT, POS.

% $ID$
% Copyright (C) 2005, by Brad Kratochvil

R = [cos(alpha) -sin(alpha) 0 0; ...
     sin(alpha)  cos(alpha) 0 0; ...
              0           0 1 0; ...
              0           0 0 1];


end

function T = transl(x, y, z)
%TRANSL set or extract the translational part of a homogeneous matrix
%
%   T = TRANSL(x)
%   T = TRANSL(x, y, z)
%
% If only X is set, TRANSL extracts the translational part of a matrix.
% Otherwise, it creates a translational matrix.
%
% NOTE: We don't check the size of the matrix because we want this function
%       to return as fast as possible.

% $Id: transl.m,v 1.1 2009-03-17 16:40:18 bradleyk Exp $
% Copyright (C) 2005, by Brad Kratochvil

  if 1 == nargin,
    T = x(1:3,4);
    T(4,1) = 1;
  else
    T = eye(4);
    if isa(x, 'sym') || isa(y, 'sym') || isa(z, 'sym'),
      T = sym(T);
    end  
    T(1,4) = x;
    T(2,4) = y;
    T(3,4) = z;
  end

end
 


Gruss Kurt
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 18.03.2016, 15:14     Titel:
  Antworten mit Zitat      
Hallo,

das Problem ist, dass rotzh numerisch rechnet. sin(pi) ist also z.B. nicht exakt 0.
Behebung des Problems:

Code:
transl(0, 0, b) * rotzh(sym(pi))


... und bitte nächstes Mal nicht nur die verwendeten Funktionen, sondern auch deinen (kompletten!) Code als Text, nicht als Bild posten.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
kurtisblow
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 18.03.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.03.2016, 15:23     Titel:
  Antworten mit Zitat      
Vielen Dank Harald, ja werde ich zukünftig so machen, war mein erster Beitrag hier im Forum.

Gruss Kurt
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.