2つの行列間をフィルタリングする方法は?

2つの行列間をフィルタリングする方法は?

ファイル1:

91  23  56  44  87  77
99  34  56  22  22  95
41  88  26  79  60  27
95  55  66  69  92  25

ファイル2:

pass fail pass pass pass fail
pass fail pass fail fail pass
pass pass fail pass pass fail
pass pass fail pass pass fail

各行の合計失敗トークンを合計しようとするため、これが予想される出力です。

出力:

100
78
53
91

失敗トークンの合計を得るために、file2の「fail」という単語に基づいてfile1をフィルタリングする方法を尋ねたいと思います。

ベストアンサー1

私はそのような仕事のためにGNU Octaveのようなマトリックス言語を使用します。

パススルー/失敗ファイルを数値に変換するとします。たとえば、次のようになります。

sed 's/pass/1/g; s/fail/0/g' passfail > passfail.nums

これで、次のことができます。

marks    = dlmread('marks');
passfail = dlmread('passfail.nums');

for i = 1:size(marks)(1)
  sum(marks(i,:)(passfail(i,:) == 0))
end

出力:

ans =  100
ans =  78
ans =  53
ans =  91

おすすめ記事