Scilab Website | Contribute with GitLab | Mailing list archives | ATOMS toolboxes
Scilab Online Help
2024.0.0 - English


MATMUL

Matrix Multiplication

Block Screenshot

Description

The MATMUL block computes the multiplication of an the first input matrix by the second input matrix/scalar. When the Multiplication rule parameter is set to:

  • 1, the block computes the matrix product. The number of rows of the first matrix must be equal to the number of columns of the second matrix. The output is a matrix where the number of rows is equal to that of the first input matrix and the number of columns is equal to that of the second input matrix.

  • 2, the block computes the matrix element-wise product. The matrices must be of the same sizes. The output is a matrix of the same size that the input matrices.

  • 3, the block computes the matrix-scalar product. The output is a matrix of the same size that input matrix.

For integer inputs, when overflow occurs the block three different forms of results :

1- A normal non saturated result. By example, if type is int8 and the result 128, the block output value will be -128.

2- A saturated result. For the previous example the block output value will be 127.

3- An error message warning the user about the overflow.

The user can select one of these three forms by setting the Do on Overflow field to 0, 1 or 2.

Parameters

  • Datatype(1=real double 2=Complex)

    It indicates the type of the output. It support only the two types double (1) and complex (2). If we input another entry in this label xcos will print the message "Datatype is not supported".

    Properties : Type 'vec' of size 1.

  • Multiplication rule (1= * 2= .* 3=scalar)

    Select multiplication rule. See description for more information.

    Properties : Type 'vec' of size 1.

  • Do on Overflow(0=Nothing 1=Saturate 2=Error)

    When this parameter is set to zero the result is similar to a normal multiplication of two integer matrix. When it is set to 1, on overflow the block saturate the result. When it is set to 2, on overflow an error message box appears.

    For double or complex inputs this parameter is ignored.

    Properties : Type 'vec' of size 1.

Default properties

  • always active: no

  • direct-feedthrough: yes

  • zero-crossing: no

  • mode: no

  • regular inputs:

    - port 1 : size [-1,-2] / type 1

    - port 2 : size [-2,-3] / type 1

  • regular outputs:

    - port 1 : size [-1,-3] / type 1

  • number/sizes of activation inputs: 0

  • number/sizes of activation outputs: 0

  • continuous-time state: no

  • discrete-time state: no

  • object discrete-time state: no

  • name of computational function: matmul_m

Example

A = [1 2 3 ; 4 5 6]
B = [9 8 7 6 ; 5 4 3 2 ; 9 7 5 3]
y = [46 37 28 19 ; 115 94 73 52]

Interfacing function

  • SCI/modules/scicos_blocks/macros/MatrixOp/MATMUL.sci

Computational function

  • SCI/modules/scicos_blocks/src/c/matmul_m.c
  • SCI/modules/scicos_blocks/src/c/matzmul_m.c
  • SCI/modules/scicos_blocks/src/c/matmul2_m.c
  • SCI/modules/scicos_blocks/src/c/matzmul2_m.c

See also

Report an issue
<< MATLU Matrix operation palette MATPINV >>

Copyright (c) 2022-2024 (Dassault Systèmes)
Copyright (c) 2017-2022 (ESI Group)
Copyright (c) 2011-2017 (Scilab Enterprises)
Copyright (c) 1989-2012 (INRIA)
Copyright (c) 1989-2007 (ENPC)
with contributors
Last updated:
Tue Oct 24 14:30:08 CEST 2023