Opened 14 years ago

Last modified 6 years ago

#1283 closed defect

Assigning matrices is terribly inefficient (unneeded expand) — at Version 2

Reported by: asodja Owned by: asodja
Priority: blocker Milestone: 1.14.0
Component: New Instantiation Version: trunk
Keywords: Cc: asodja

Description (last modified by Martin Sjölund)

The following model calles function EulerAngles with same arguments for every element of the matrix:

model TransformMatrix
  function EulerAngles 
    "Computes transformation matrix for given Euler angles"
    input Real phi;
    input Real theta;
    input Real psi;
    output Real A[4, 4];
  algorithm 
    A := diagonal(vector(ones(1, 4)));
    A[1, 1] := cos(psi)*cos(phi) - cos(theta)*sin(phi)*sin(psi);
    A[1, 2] := cos(psi)*sin(phi) + cos(theta)*cos(phi)*sin(psi);
    A[1, 3] := sin(psi)*sin(theta);
    A[2, 1] := -sin(psi)*cos(phi) - cos(theta)*sin(phi)*cos(psi);
    A[2, 2] := -sin(psi)*sin(phi) + cos(theta)*cos(phi)*cos(psi);
    A[2, 3] := cos(psi)*sin(theta);
    A[3, 1] := sin(theta)*sin(phi);
    A[3, 2] := -sin(theta)*cos(phi);
    A[3, 3] := cos(theta);
  end EulerAngles;
  
  parameter Real phi = 0;
  parameter Real theta = 0;
  parameter Real psi = 0;
  parameter Real T[4, 4]=EulerAngles(phi,theta,psi);  
end TransformMatrix;

Change History (2)

comment:1 by Martin Sjölund, 11 years ago

Cc: asodja, → asodja
Description: modified (diff)

comment:2 by Martin Sjölund, 11 years ago

Description: modified (diff)
Note: See TracTickets for help on using tickets.