2013-03-14 5 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(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)).

У вас может возникнуть проблема с ошибкой точности при сравнении двойных значений с 0 и 1.

+0

Спасибо! Это помогло мне исправить мою проблему и с помощью команды sum я смог избавиться от всех этих операторов if и сделать скрипт намного короче. – Abi

Смежные вопросы