从Octave中的矩阵计算中省略零

时间:2015-10-20 21:46:50

标签: matrix octave zero matrix-inverse

我在Octave中执行输入输出计算。我在公式中有几个矩阵/向量:

F = f' * (I-A)^-1 * Y

所有向量可能都包含零。我想从计算中省略它们,而只是返回0。任何帮助将不胜感激!

米兰达

1 个答案:

答案 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()函数将其重新转换为矩阵。