- Automatic detection of the input data format implemented.
- `-toStruct` option added, to return results in a structure instead of in the calling environment.
* `jremove` is optional and `clear` could be used to release Java objects mapped to Scilab.
+* `blockdiag()` is introduced to improve, replace, and extend `sysdiag()` to strings.
+
Help pages:
-----------
* [#16174](http://bugzilla.scilab.org/show_bug.cgi?id=16174): `libraryinfo` yielded 0x0 matrix of strings for libs without macro
* [#16208](http://bugzilla.scilab.org/show_bug.cgi?id=16208): Using 3D string matrix with old C-api gateways may crash Scilab.
* [#16209](http://bugzilla.scilab.org/show_bug.cgi?id=16209): grand() causes a freeze after several consecutive calls when using default base generator.
+<<<<<<< HEAD
* [#16242](http://bugzilla.scilab.org/show_bug.cgi?id=16242): `loadmatfile()` could not read Octave native text data files.
* [#16263](http://bugzilla.scilab.org/show_bug.cgi?id=16263): Polynomial insertion was broken for complex case.
* [#16264](http://bugzilla.scilab.org/show_bug.cgi?id=16264): After empty for loop iterator was left uninitialized.
* [#16271](http://bugzilla.scilab.org/show_bug.cgi?id=16271): `loadmatfile()` was never able to automatically detect the input data format.
* [#16272](http://bugzilla.scilab.org/show_bug.cgi?id=16272): `spzeros(0,n)` and `spzeros(n,0)` were different from `sparse(0,0)`.
+=======
+* [#16257](http://bugzilla.scilab.org/show_bug.cgi?id=16257): `blockdiag()` implemented to replace `sysdiag()`, improved and extended to strings.
+>>>>>>> 4adc766322d... * Bug 16257: blockdiag() introduced
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ * Copyright (C) 2013 - A. Khorshidi
+ * Copyright (C) 2012 - 2016 - Scilab Enterprises
+ * Copyright (C) 2019 - Samuel GOUGEON
+ *
+ * This file is hereby licensed under the terms of the GNU GPL v2.0,
+ * pursuant to article 5.3.4 of the CeCILL v.2.1.
+ * This file was originally licensed under the terms of the CeCILL v2.1,
+ * and continues to be available under such terms.
+ * For more information, see the COPYING file which you should have received
+ * along with this program.
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns5="http://www.w3.org/1999/xhtml"
+ xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook"
+ xmlns:scilab="http://www.scilab.org" xml:id="blockdiag" xml:lang="en">
+ <refnamediv>
+ <refname>blockdiag</refname>
+ <refpurpose>
+ Creates a block diagonal matrix from provided arrays. Block diagonal system connection.
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Syntax</title>
+ <synopsis>r = blockdiag(a1,a2,...,an)</synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Arguments</title>
+ <variablelist>
+ <varlistentry>
+ <term>ai</term>
+ <listitem>
+ <para>
+ Matrices of booleans, numbers, polynomials, rationals, or strings, of any size.
+ Sparse matrices are accepted.
+ </para>
+ <para>
+ subsystems (i.e. gains, or linear systems in state-space or transfer form).
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>r</term>
+ <listitem>
+ <para>
+ Matrix with a1, a2, a3, ... on the diagonal. <varname>r</varname> is
+ sparse when at least one of the <varname>ai</varname> inputs is sparse.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Description</title>
+ <para>
+ Given the inputs <varname>A</varname>, <varname>B</varname> and <varname>C</varname>,
+ the output will have these matrices arranged on the diagonal:
+ <latex style="display">\begin{bmatrix} A \ \ 0 \ \ 0 \\ 0 \ \ B \ \ 0 \\ 0 \ \ 0 \ \ C \end{bmatrix}</latex>.
+ </para>
+ <para>
+ If all the input matrices are square, the output is known as a
+ <emphasis>block diagonal matrix</emphasis>.
+ </para>
+ <para>
+ If sub-systems are provided, <literal>blockdiag(..)</literal> provides the
+ block-diagonal system made with subsystems put in the main diagonal.
+ This can be used in particular for system interconnections.
+ </para>
+ <note><literal>blockdiag()</literal> can be overloaded.</note>
+ </refsection>
+ <refsection>
+ <title>Examples</title>
+ <para>
+ With numbers:
+ </para>
+ <programlisting role="example"><![CDATA[
+A = [1 0 ; 0 1]
+B = [3 4 5 ; 6 7 8]
+C = 7
+D = blockdiag(A, B, C)
+ ]]></programlisting>
+ <screen><![CDATA[
+--> D = blockdiag(A, B, C)
+ D =
+ 1. 0. 0. 0. 0. 0.
+ 0. 1. 0. 0. 0. 0.
+ 0. 0. 3. 4. 5. 0.
+ 0. 0. 6. 7. 8. 0.
+ 0. 0. 0. 0. 0. 7.
+]]></screen>
+ <para>
+ With booleans:
+ </para>
+ <programlisting role="example"><![CDATA[
+blockdiag([%T %T %T], [%T ; %F], [%T %F])
+ ]]></programlisting>
+ <screen><![CDATA[
+--> blockdiag([%T %T %T], [%T ; %F], [%T %F])
+ ans =
+ T T T F F F
+ F F F T F F
+ F F F F F F
+ F F F F T F
+]]></screen>
+ <para>
+ With polynomials:
+ </para>
+ <programlisting role="example"><![CDATA[
+s = %s;
+blockdiag(s, [s^2 ; s^3], [1+s, 1-s^2 ; 4 s^4])
+ ]]></programlisting>
+ <screen><![CDATA[
+--> b = blockdiag(s, [s^2 ; s^3], [1+s, 1-s^2 ; 4 s^4])
+ b =
+
+ s 0 0 0
+ 2
+ 0 s 0 0
+ 3
+ 0 s 0 0
+ 2
+ 0 0 1 +s 1 -s
+ 4
+ 0 0 4 s
+]]></screen>
+ <para>
+ With rationals:
+ </para>
+ <programlisting role="example"><![CDATA[
+s = %s;
+blockdiag([1/s 2*s/(4*s+3)], 1/(s-1)^2)
+ ]]></programlisting>
+ <screen><![CDATA[
+--> blockdiag([1/s 2*s/(4*s+3)], 1/(s-1)^2)
+ ans =
+
+ 1 2s 0
+ -- ------- --
+ s 3 + 4s 1
+
+ 0 0 1
+ -- -- -----------
+ 2
+ 1 1 1 - 2s + s
+]]></screen>
+ <para>
+ With some sparse input:
+ </para>
+ <programlisting role="example"><![CDATA[
+S = blockdiag([1 2], sparse([0 3 ; 4 0]), 5)
+full(S)
+ ]]></programlisting>
+ <screen><![CDATA[
+--> S = blockdiag([1 2], sparse([0 3 ; 4 0]), 5)
+ S =
+( 4, 5) sparse matrix
+( 1, 1) 1.
+( 1, 2) 2.
+( 2, 4) 3.
+( 3, 3) 4.
+( 4, 5) 5.
+
+--> full(S)
+ ans =
+ 1. 2. 0. 0. 0.
+ 0. 0. 0. 3. 0.
+ 0. 0. 4. 0. 0.
+ 0. 0. 0. 0. 5.
+]]></screen>
+ <para>
+ With some text:
+ </para>
+ <programlisting role="example"><![CDATA[
+blockdiag(["Scilab" "is"],"a",["scientific" ; "software"])
+ ]]></programlisting>
+ <screen><![CDATA[
+--> blockdiag(["Scilab" "is"], "a", ["scientific" ; "software"])
+ ans =
+!Scilab is !
+! a !
+! scientific !
+! software !
+]]></screen>
+ <para>
+ With mixed concatenable data types (see the page of brackets []):
+ </para>
+ <programlisting role="example"><![CDATA[
+blockdiag([%T %F], [-1 3], (1-%z)^2)
+ ]]></programlisting>
+ <screen><![CDATA[
+--> blockdiag([%T %F], [-1 3], (1-%z)^2)
+ ans =
+
+ 1 0 0 0 0
+
+ 0 0 -1 3 0
+ 2
+ 0 0 0 0 1 -2z +z
+]]></screen>
+ <para>
+ With some linear system:
+ </para>
+ <programlisting role="example"><![CDATA[
+s = poly(0,'s')
+blockdiag(rand(2,2), 1/(s+1), [1/(s-1);1/((s-2)*(s-3))])
+blockdiag(tf2ss(1/s), 1/(s+1), [1/(s-1);1/((s-2)*(s-3))])
+ ]]></programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>See also</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="diag">diag</link>
+ </member>
+ <member>
+ <link linkend="bdiag">bdiag</link>
+ </member>
+ <member>
+ <link linkend="repmat">repmat</link>
+ </member>
+ <member>
+ <link linkend="brackets">brackets</link>
+ </member>
+ <member>
+ <link linkend="feedback">feedback</link>
+ </member>
+ </simplelist>
+ </refsection>
+ <refsection role="history">
+ <title>History</title>
+ <revhistory>
+ <revision>
+ <revnumber>6.1.0</revnumber>
+ <revdescription>
+ blockdiag() introduced.
+ </revdescription>
+ </revision>
+ </revhistory>
+ </refsection>
+</refentry>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA
+ * Copyright (C) 2013 - A. Khorshidi
+ * Copyright (C) 2012 - 2016 - Scilab Enterprises
+ * Copyright (C) 2019 - Samuel GOUGEON
+ *
+ * This file is hereby licensed under the terms of the GNU GPL v2.0,
+ * pursuant to article 5.3.4 of the CeCILL v.2.1.
+ * This file was originally licensed under the terms of the CeCILL v2.1,
+ * and continues to be available under such terms.
+ * For more information, see the COPYING file which you should have received
+ * along with this program.
+ *
+ -->
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns5="http://www.w3.org/1999/xhtml"
+ xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook"
+ xmlns:scilab="http://www.scilab.org" xml:id="blockdiag" xml:lang="ru">
+ <refnamediv>
+ <refname>blockdiag</refname>
+ <refpurpose>
+ Создаёт блочную диагональную матрицу из указанных массивов. Соединение диагональной
+ системы блоков.
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <title>Синтаксис</title>
+ <synopsis>r = blockdiag(a1,a2,...,an)</synopsis>
+ </refsynopsisdiv>
+ <refsection>
+ <title>Аргументы</title>
+ <variablelist>
+ <varlistentry>
+ <term>ai</term>
+ <listitem>
+ <para>
+ Матрицы логических значений, чисел, полиномов, рациональных или строковых
+ значений любого размера. Принимаются разрежённые матрицы.
+ </para>
+ <para>
+ Подсистемы (т.е. коэффициенты усиления, или линейные системы в
+ пространстве состояний или передаточной форме).
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>r</term>
+ <listitem>
+ <para>
+ Матрица с <literal>a1, a2, a3</literal>, ... по диагонали.
+ <varname>r</varname> является разрежённой, хотя бы одна из входных
+ <varname>ai</varname> разрёжённая.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsection>
+ <refsection>
+ <title>Описание</title>
+ <para>
+ Подав на вход <varname>A</varname>, <varname>B</varname> and <varname>C</varname>,
+ на выходе эти матрицы будут расставлены по диагонали:
+ <latex style="display">\begin{bmatrix} A \ \ 0 \ \ 0 \\ 0 \ \ B \ \ 0 \\ 0 \ \ 0 \ \ C \end{bmatrix}</latex>.
+ </para>
+ <para>
+ Если все входные матрицы квадратные, то выходная матрицы известна как блочная
+ диагональная матрица <emphasis>block diagonal matrix</emphasis>.
+ </para>
+ <para>
+ Если указаны подсистемы, то <literal>blockdiag(..)</literal> выдаёт блочно-
+ диагональную систему, сделанную из подсистем, располженых на главной диагонали.
+ Это может быть использовано в частности для соединений системы.
+ </para>
+ <note><literal>blockdiag()</literal> может быть перегружена.</note>
+ </refsection>
+ <refsection>
+ <title>Примеры</title>
+ <para>
+ С числами:
+ </para>
+ <programlisting role="example"><![CDATA[
+A = [1 0 ; 0 1]
+B = [3 4 5 ; 6 7 8]
+C = 7
+D = blockdiag(A, B, C)
+ ]]></programlisting>
+ <screen><![CDATA[
+--> D = blockdiag(A, B, C)
+ D =
+ 1. 0. 0. 0. 0. 0.
+ 0. 1. 0. 0. 0. 0.
+ 0. 0. 3. 4. 5. 0.
+ 0. 0. 6. 7. 8. 0.
+ 0. 0. 0. 0. 0. 7.
+]]></screen>
+ <para>
+ С логическими значениями:
+ </para>
+ <programlisting role="example"><![CDATA[
+blockdiag([%T %T %T], [%T ; %F], [%T %F])
+ ]]></programlisting>
+ <screen><![CDATA[
+--> blockdiag([%T %T %T], [%T ; %F], [%T %F])
+ ans =
+ T T T F F F
+ F F F T F F
+ F F F F F F
+ F F F F T F
+]]></screen>
+ <para>
+ С полиномами:
+ </para>
+ <programlisting role="example"><![CDATA[
+s = %s;
+blockdiag(s, [s^2 ; s^3], [1+s, 1-s^2 ; 4 s^4])
+ ]]></programlisting>
+ <screen><![CDATA[
+--> b = blockdiag(s, [s^2 ; s^3], [1+s, 1-s^2 ; 4 s^4])
+ b =
+
+ s 0 0 0
+ 2
+ 0 s 0 0
+ 3
+ 0 s 0 0
+ 2
+ 0 0 1 +s 1 -s
+ 4
+ 0 0 4 s
+]]></screen>
+ <para>
+ С рациональными значениями:
+ </para>
+ <programlisting role="example"><![CDATA[
+s = %s;
+blockdiag([1/s 2*s/(4*s+3)], 1/(s-1)^2)
+ ]]></programlisting>
+ <screen><![CDATA[
+--> blockdiag([1/s 2*s/(4*s+3)], 1/(s-1)^2)
+ ans =
+
+ 1 2s 0
+ -- ------- --
+ s 3 + 4s 1
+
+ 0 0 1
+ -- -- -----------
+ 2
+ 1 1 1 - 2s + s
+]]></screen>
+ <para>
+ С некоторыми разрежёнными матрицами на входе:
+ </para>
+ <programlisting role="example"><![CDATA[
+S = blockdiag([1 2], sparse([0 3 ; 4 0]), 5)
+full(S)
+ ]]></programlisting>
+ <screen><![CDATA[
+--> S = blockdiag([1 2], sparse([0 3 ; 4 0]), 5)
+ S =
+( 4, 5) sparse matrix
+( 1, 1) 1.
+( 1, 2) 2.
+( 2, 4) 3.
+( 3, 3) 4.
+( 4, 5) 5.
+
+--> full(S)
+ ans =
+ 1. 2. 0. 0. 0.
+ 0. 0. 0. 3. 0.
+ 0. 0. 4. 0. 0.
+ 0. 0. 0. 0. 5.
+]]></screen>
+ <para>
+ С текстом:
+ </para>
+ <programlisting role="example"><![CDATA[
+blockdiag(["Scilab" "is"],"a",["scientific" ; "software"])
+ ]]></programlisting>
+ <screen><![CDATA[
+--> blockdiag(["Scilab" "is"], "a", ["scientific" ; "software"])
+ ans =
+!Scilab is !
+! a !
+! scientific !
+! software !
+]]></screen>
+ <para>
+ Со смешанными конкатенируемыми типами данных (см. справку по квадратным скобкам
+ <literal>[]</literal>):
+ </para>
+ <programlisting role="example"><![CDATA[
+blockdiag([%T %F], [-1 3], (1-%z)^2)
+ ]]></programlisting>
+ <screen><![CDATA[
+--> blockdiag([%T %F], [-1 3], (1-%z)^2)
+ ans =
+
+ 1 0 0 0 0
+
+ 0 0 -1 3 0
+ 2
+ 0 0 0 0 1 -2z +z
+]]></screen>
+ <para>
+ С линейной системой:
+ </para>
+ <programlisting role="example"><![CDATA[
+s = poly(0,'s')
+blockdiag(rand(2,2), 1/(s+1), [1/(s-1);1/((s-2)*(s-3))])
+blockdiag(tf2ss(1/s), 1/(s+1), [1/(s-1);1/((s-2)*(s-3))])
+ ]]></programlisting>
+ </refsection>
+ <refsection role="see also">
+ <title>Смотрите также</title>
+ <simplelist type="inline">
+ <member>
+ <link linkend="diag">diag</link>
+ </member>
+ <member>
+ <link linkend="bdiag">bdiag</link>
+ </member>
+ <member>
+ <link linkend="repmat">repmat</link>
+ </member>
+ <member>
+ <link linkend="brackets">brackets</link>
+ </member>
+ <member>
+ <link linkend="feedback">feedback</link>
+ </member>
+ </simplelist>
+ </refsection>
+ <refsection role="history">
+ <title>История</title>
+ <revhistory>
+ <revision>
+ <revnumber>6.1.0</revnumber>
+ <revdescription>
+ Введена <literal>blockdiag()</literal>.
+ </revdescription>
+ </revision>
+ </revhistory>
+ </refsection>
+</refentry>
--- /dev/null
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) INRIA -
+//
+// Copyright (C) 2012 - 2016 - Scilab Enterprises
+// Copyright (C) 2019 - Samuel GOUGEON
+//
+// This file is hereby licensed under the terms of the GNU GPL v2.0,
+// pursuant to article 5.3.4 of the CeCILL v.2.1.
+// This file was originally licensed under the terms of the CeCILL v2.1,
+// and continues to be available under such terms.
+// For more information, see the COPYING file which you should have received
+// along with this program.
+
+function r = blockdiag(varargin)
+ //!
+ // Call overload ?
+ // ---------------
+ callOverload = %f
+ for i = 1:length(varargin)
+ v = varargin(i);
+ callOverload = callOverload | ..
+ ( and(type(v)<>[1 2 4 5 6 8 10]) & and(typeof(v)<>["rational" "state-space"]))
+ if callOverload
+ oname = "%" + typeof(v, "overload") + "_blockdiag"
+ if isdef(oname,"n")
+ execstr("r = " + oname + "(varargin(:));")
+ return
+ else
+ msg = _("Function not defined for given argument type(s),\n Check arguments or define the overloading function %s().\n")
+ error(msprintf(msg, oname))
+ end
+ end
+ end
+ //
+ isss = %f;
+ for i = 1:length(varargin)
+ isss = isss | typeof(varargin(i))=="state-space"
+ if isss, break, end
+ end
+ withSparse = %f
+ for i = 1:length(varargin)
+ withSparse = withSparse | issparse(varargin(i))
+ if withSparse, break, end
+ end
+ r = varargin(1);
+ if withSparse then
+ r = sparse(r);
+ end
+ if type(r)==10 then
+ padd = emptystr
+ else
+ padd = zeros
+ end
+ [m1, n1] = size(r);
+ for k = 2:size(varargin)
+ ak = varargin(k)
+ [mk, nk] = size(ak);
+ if mk*nk > 0
+ if isss
+ r = [r, padd(m1, nk); padd(mk, n1), ak]
+ else
+ r(m1+mk, n1+nk) = ak($,$) // array extension
+ if mk*nk > 1
+ r(m1+1:m1+mk, n1+1:n1+nk) = ak
+ end
+ end
+ m1 = m1+mk
+ n1 = n1+nk
+ end
+ end
+endfunction
--- /dev/null
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2019 - Samuel GOUGEON
+//
+// This file is hereby licensed under the terms of the GNU GPL v2.0,
+// pursuant to article 5.3.4 of the CeCILL v.2.1.
+// This file was originally licensed under the terms of the CeCILL v2.1,
+// and continues to be available under such terms.
+// For more information, see the COPYING file which you should have received
+// along with this program.
+// ----------------------------------------------------------------------------
+
+// <-- CLI SHELL MODE -->
+// <-- NO CHECK REF -->
+// <-- IMPOSED ENGLISH -->
+//
+// --------------------------
+// Unit tests for blockdiag()
+// --------------------------
+
+// Decimal numbers and encoded integers:
+R = [1 2];
+C = [3 ; 4]
+M = [5 6 ; 7 8];
+ref = [1,2,0,0,0;0,0,3,0,0;0,0,4,0,0;0,0,0,5,6;0,0,0,7,8];
+for it = [0 1 2 4 8 11 12 14 18]
+ b = blockdiag(iconvert(R,it),iconvert(C, it), iconvert(M,it));
+ assert_checkequal(b, iconvert(ref,it));
+end
+
+// Strings
+b = blockdiag(string(R), string(C), string(M));
+assert_checkequal(b, strsubst(string(ref),"0",""));
+
+// Booleans
+b = blockdiag([%T %T], [%T %T]', [%T %T ; %T %T], %T)
+T = %T; F = %F;
+ref = [T,T,F,F,F,F;F,F,T,F,F,F;F,F,T,F,F,F;F,F,F,T,T,F;F,F,F,T,T,F;F,F,F,F,F,T];
+assert_checkequal(b, ref);
+b = blockdiag(sparse([%T %T]), sparse([%T %T]'), sparse([%T %T ; %T %T]), sparse(%T));
+assert_checkequal(b, sparse(ref));
+b = blockdiag([%T %T], sparse([%T %T]'), [%T %T ; %T %T], sparse(%T));
+assert_checkequal(b, sparse(ref));
+
+// Polynomials
+z = %z;
+b = blockdiag([z 1-z^2], [1 3*z]', z.^[1 3 ; 2 4], z^5)
+ref = [ z,1-z^2,0*z,0*z,0*z,0*z;
+ 0*z,0*z,1,0*z,0*z,0*z;
+ 0*z,0*z,3*z,0*z,0*z,0*z;
+ 0*z,0*z,0*z,z,z^3,0*z;
+ 0*z,0*z,0*z,z^2,z^4,0*z;
+ 0*z,0*z,0*z,0*z,0*z,z^5];
+assert_checkequal(b, ref);
+
+// Rationals
+b = blockdiag([1/z z/(1-z)], [3*z z^2]', (1+z)./z.^[1 3 ; 2 4], 1/z^5);
+ref = [1,z,0*z,0*z,0*z,0*z;0*z,0*z,3*z,0*z,0*z,0*z;0*z,0*z,z^2,0*z,0*z,0*z;0*z,0*z,0*z,1+z,1+z,0*z;0*z,0*z,0*z,1+z,1+z,0*z;0*z,0*z,0*z,0*z,0*z,1] ./ [z,1-z,1,1,1,1;1,1,1,1,1,1;1,1,1,1,1,1;1,1,1,z,z^3,1;1,1,1,z^2,z^4,1;1,1,1,1,1,z^5];
+assert_checkequal(b, ref);
+
+
+// Errors
+msg = ["Function not defined for given argument type(s),"
+ " Check arguments or define the overloading function %ip_blockdiag()."];
+assert_checkerror("blockdiag(1:$, 2:$)", msg);
bitor
bitset
bitxor
+blockdiag
cat
cell2mat
cellstr
_LaTeX_STEP_FUNCTION.xml_1.png=7544adffd057978d0ddaed767ae05f25\r
_LaTeX_assert_computedigits.xml_1.png=082a70de2c216b6eb1951a75720fdcfc\r
_LaTeX_assert_computedigits.xml_2.png=27dba5ee1401d31d2106736651e99140\r
+_LaTeX_blockdiag.xml_1.png=26bcad469ac051064707c071f102456c\r
_LaTeX_bvode.xml_1.png=7d919bf8f33698749d88e30e99c33d7c\r
_LaTeX_bvode.xml_2.png=417a5301693b60807fa658e5ef9f9535\r
_LaTeX_bvode.xml_3.png=7e3c241c2dec821bd6c6fbd314fe4762\r
</tr>
<tr>
<td>
- <programlisting role="example"><![CDATA[
+ <programlisting role="no-scilab-exec"><![CDATA[
blkdiag
]]></programlisting>
</td>
<td>
<programlisting role="example"><![CDATA[
-sysdiag
+blockdiag
]]></programlisting>
</td>
</tr>