转置行向量 X 以获得 Scilab 中的兼容尺寸警告

Transposing row vector X to get compatible dimensions warning in Scilab

我正在学习使用 Scilab,我尝试绘制一个我知道在某个值处有不连续性的函数,但我得到的图有一个不可预期的行为,所以我尝试绘制一个非常知名的函数 "y=1/x".

我创建了 "x" 矢量

x=[-10:1:10];

然后创建 "y" 函数

y=1/x;

然后使用绘图命令

plot(x,y)

我收到以下警告

WARNING: Transposing row vector X to get compatible dimensions

而且我的剧情是一条直线,我也不知道哪里做错了

好吧,尝试在控制台中输入 xy,看看你的变量是什么样的:

-->x
 x  =


         column  1 to 12

  - 10.  - 9.  - 8.  - 7.  - 6.  - 5.  - 4.  - 3.  - 2.  - 1.    0.    1.  

         column 13 to 21

    2.    3.    4.    5.    6.    7.    8.    9.    10.  

-->y
 y  =

  - 0.0129870  
  - 0.0116883  
  - 0.0103896  
  - 0.0090909  
  - 0.0077922  
  - 0.0064935  
  - 0.0051948  
  - 0.0038961  
  - 0.0025974  
  - 0.0012987  
    0.         
    0.0012987  
    0.0025974  
    0.0038961  
    0.0051948  
    0.0064935  
    0.0077922  
    0.0090909  
    0.0103896  
    0.0116883  
    0.0129870  

所以 x 是一个行数组,y 是一个列数组,这就是为什么 scilab 抱怨维度不兼容的原因。要删除警告,您必须转置其中一个数组,使它们的维度相同。你可以在很多地方这样做,例如:

y=1/x';

plot(x',y);

plot(x,y');

注意:在 Scilab 5.4.x 和更早的版本中没有这样的警告,Scilab 默默地转置了其中一个数组。

注意:1/x 计算一些类似 1*pinv(x) 的东西,而不是数组 [1/x(1),1/x(2),...]。要获得先前的结果,请使用 1 ./x 进行元素明智的划分。