1

如果我有一个矩阵并且我想对矩阵的每一行应用一个函数。这个函数有三个可能的输出,x = 0、x = 1 或 x > 0。有几件事我遇到了麻烦......

1)输出 x = 1 或 x > 0 的情况不同,我不确定在编写脚本时如何区分两者。

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,bc退出循环:

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

如果要区分x==1x>0话可以用sum(xor(x==1,x>0))

此外,在将双精度值与 0 和 1 进行比较时,您可能会遇到精度错误问题。

于 2013-03-14T03:54:42.473 回答