Matrix 在倍频程矩阵计算中省略零

Matrix 在倍频程矩阵计算中省略零,matrix,octave,zero,matrix-inverse,Matrix,Octave,Zero,Matrix Inverse,我在用八度音阶进行输入输出计算。我在公式中有几个矩阵/向量: F = f' * (I-A)^-1 * Y 所有向量可能都包含零。我想从计算中省略它们,只返回0。任何帮助都将不胜感激 米兰达,你说省略是什么意思 如果要从向量中删除零,可以执行以下操作: octave:1> x=[1,2,0,3,4,0,5]; octave:2> x(find(x==0))=[] x = 1 2 3 4 5 逻辑是:x==0将测试x的每个元素在这种情况下,如果它等于零,则测试

我在用八度音阶进行输入输出计算。我在公式中有几个矩阵/向量:

F = f' * (I-A)^-1 * Y
所有向量可能都包含零。我想从计算中省略它们,只返回0。任何帮助都将不胜感激


米兰达,你说省略是什么意思

如果要从向量中删除零,可以执行以下操作:

octave:1> x=[1,2,0,3,4,0,5];
octave:2> x(find(x==0))=[]
x =

   1   2   3   4   5
逻辑是:x==0将测试x的每个元素在这种情况下,如果它等于零,则测试为,如果该元素的测试为假,则返回0和1的向量0,否则返回1

因此:

find函数将返回其参数的任何非零元素的索引值,因此:

octave:3> find(x==0)
ans =

   3   6
然后,当您执行以下操作时,您只是在索引和删除:

octave:5> x([3, 6]) = []
x =

   1   2   3   4   5
但是你可以用find函数的输出,在这里是向量[3,6]

您可以对矩阵执行相同的操作:

octave:7> A = [1,2,0;4,5,0]
A =

   1   2   0
   4   5   0

octave:8> A(find(A==0))=[]
A =

   1
   4
   2
   5
然后使用重塑函数将其转换回矩阵

octave:7> A = [1,2,0;4,5,0]
A =

   1   2   0
   4   5   0

octave:8> A(find(A==0))=[]
A =

   1
   4
   2
   5