1

マトリックスがあり、マトリックスの各行に関数を適用したい場合。この関数には、x = 0、x = 1、または x > 0 の 3 つの可能な出力があります。いくつか問題が発生しています...

1) x = 1 または x > 0 を出力するケースは異なり、スクリプトを作成するときに 2 つを区別する方法がわかりません。

2) 関数が正しくカウントされませんか? これは、ループの設定方法に問題があるのではないかと思いますか?

これが私が思いついたものです。論理的には、これはうまくいくはずだと思います(私が述べた最初の問題によるしゃっくりを除いて)

[m n] = size(matrix);
a = 0; b = 0; c = 0;
for i = 1 : m
x(i) = function(matrix(m,:));
if x > 0
a = a + 1;
end
if x == 0
b = b + 1;
end
if x == 1
c = c + 1;
end
end

4

1 に答える 1

0

まず、4行目にエラーがある可能性があります。おそらく。iの代わりになりmます。

x(i) = function(matrix(i,:));

を計算aして、ループからb外すことができます。c

a = sum(x>0);
b = sum(x==0);
c = sum(x==1);

x==1区別したい場合はx>0、である可能性がありsum(xor(x==1,x>0))ます。

また、double値を0および1と比較すると、精度エラーの問題が発生する可能性があります。

于 2013-03-14T03:54:42.473 に答える