我在Octave中执行输入输出计算。我在公式中有几个矩阵/向量:
F = f' * (I-A)^-1 * Y
所有向量可能都包含零。我想从计算中省略它们,而只是返回0。任何帮助将不胜感激!
米兰达
答案 0 :(得分: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)否则)
所以:
octave:1> x=[1,2,0,3,4,0,5];
octave:2> x==0
ans =
0 0 1 0 0 1 0
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
然后使用reshape()函数将其重新转换为矩阵。