-1
我试图实现MATLAB以下八度命令:相当于MATLAB的倍频命令
M = eye(x)(y,:);
x
只是一个数字(在我的例子10
)和y
是一个向量(这里8X1) :
y = [1 3 4 5 7 10 9 10];
的倍频命令将产生:
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的第一个矩阵?
您的第一个M数组的第6行很尴尬......您确认了吗? – Ratbert
你不能像MATLAB那样链接索引,你必须把'eye(x)'放在一个临时变量中。 – beaker
你能举个例子吗,烧杯? –