在MATLAB中等效Octave命令

时间:2017-07-29 20:32:47

标签: matlab matrix octave

我正在尝试在MATLAB中实现以下Octave命令:

M = eye(x)(y,:);

x只是一个数字(在我的示例中为10),而y是一个向量(此处为8x1):

y = [1 3 4 5 7 10 9 10];

Octave命令将生成:

M =

   1   0   0   0   0   0   0   0   0   0    
   0   0   1   0   0   0   0   0   0   0    
   0   0   0   1   0   0   0   0   0   0    
   0   0   0   0   1   0   0   0   0   0    
   0   0   0   0   0   0   1   0   0   0    
   0   0   0   0   0   0   0   0   0   1    
   0   0   0   0   0   0   0   0   1   0    
   0   0   0   0   0   0   0   0   0   1

那些非常靠近对角线。

我最接近MATLAB的是以下命令:

n = size(y,1);
Y = eye(n, x);

但它会产生一些不同的东西。如果行和列之间的差异变大,那将会非常不同。

M =

   1   0   0   0   0   0   0   0   0   0
   0   1   0   0   0   0   0   0   0   0
   0   0   1   0   0   0   0   0   0   0
   0   0   0   1   0   0   0   0   0   0
   0   0   0   0   1   0   0   0   0   0
   0   0   0   0   0   1   0   0   0   0
   0   0   0   0   0   0   1   0   0   0
   0   0   0   0   0   0   0   1   0   0

我怎么能用MATLAB得到第一个矩阵?

1 个答案:

答案 0 :(得分:0)

首先你应该找到这个表达式eye(x)(y,:)的含义。首先使用x创建大小为x的标识矩阵,然后选择索引位于y的行。因此,等效语法为:

 E = eye(x);
 M = E(y,:);