八度。一种将数值数组和字符数组并排显示的方法?

Octave. A way to display numeric arrays and char arrays next to each other?

我想以格式显示矩阵 Yn (5x5)、Un(5x1)、Jn(5x1):Yn * Un = Jn,如下所示:

multiply_sign = [ nan; nan; '*'; nan; nan ];
equals_sign = [ nan; nan; '='; nan; nan ];
YnUnJn = [Yn, multiply_sign, Un, equals_sign, Jn]

我收到一个错误,“*”和“=”向量是字符数组,Yn、Un、Jn 是数字数组。有没有办法绕过它?

在matlab中可以使用uitable,但在Octave中没有实现。

输入为 Yn、Un、Jn 矩阵,其维度如上所述。

输出是 YnUnJn 矩阵或任何看起来像指定格式的东西:矩阵 Yn,然后是“*”符号,然后是 Un,然后是“=”符号,然后是 Jn 矩阵。

像这样:

这是 Octave 中的基本实现。注意 disp 八度函数 returns 一个字符串。

Yn = rand(5)-.5;
Un = rand(5,1)-.5;
Jn = rand(5,1)-.5;
b = blanks(size(Yn ,1));

dsp=@(x)char(strsplit(disp(x),'\n'));

multiply_sign = strjust(['*' b],'center').';
equals_sign   = strjust(['=' b],'center').';

disp([dsp(Yn) multiply_sign dsp(Un) equals_sign dsp(Jn)])


   0.1610588   0.1244556  -0.2046512  -0.1799725  -0.3302048    0.364565    0.167053
  -0.1774412   0.3618586   0.4974047   0.4349322  -0.4689669   -0.013163   -0.442009
   0.1016794  -0.0991844   0.4728800   0.2046589  -0.2876299*   0.091990=   0.405725
  -0.2048010  -0.4256928  -0.0517186   0.2915129  -0.3435698   -0.376725    0.342397
  -0.2740378  -0.0907411   0.0090493   0.4677547  -0.2294902   -0.136846    0.096984

.

在 MATLAB 中,您可能需要使用 evalc('disp(Yn)')