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