2013-03-14 68 views
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

回答

0

首先你可能在第4行的错误它可能应该是i而不是m 。如果要区分x==1x>0然后可能是sum(xor(x==1,x>0))

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

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

可以计算abc圈外。

此外,在比较0和1的双精度值时可能会出现精度错误问题。

+0

谢谢!这帮助我解决了我的问题,并使用sum命令,我能够摆脱所有这些if语句并使脚本更短。 – Abi 2013-03-14 04:36:34