你如何使用模数函数求和奇数?
我能够查看奇数整数,但无法将它们加在一起。
答案 0 :(得分:2)
如果我正确解释您的问题,您不想使用模数函数来求和奇数整数,但您想使用模数函数来帮助您确定什么是奇数,只对数据集中奇数整数的数字求和。如果您第一眼看到这一点,这就令人困惑,因为它听起来像是要使用模数函数和仅模数函数来求和。
假设您在名为data
的向量中有整数。你可以做的是如果你想检查整数是否是奇数,你检查一下除以2后的余数是否为1(即num mod 2 == 1
)。回想一下奇数的定义。这意味着您可以获取任何整数,并对其进行表示,以便您可以找到整数k
,其中数字可以表示为2k + 1
。因此,如果你以2为基数取这个数的模数,你会得到1作为答案。请记住,不适用于否定数字。
因此,这些是我建议您采取的步骤:
以下是我将使用的代码:
function sumOdd = sumOddNumbers(data)
%// Step #1
ind = mod(data, 2) == 1;
%// Step #2
sumOdd = sum(data(ind));
我们在这里创建一个可以帮助我们做到这一点的功能。您指定data
作为函数的输入,输出(sumOdd
)将包含奇数的总和。因此,请使用此代码并将其保存到新的.m
文件中。另外,请务必将其称为sumOddNumbers.m
。接下来,确保将工作目录设置为放置此文件的位置。
让我们做一个简单的例子:
data = 1 : 10; %// Create an array going from 1 to 10
sumOdd = sumOddNumbers(data); %// Answer should be 25... why?
现在让我们逐步完成该功能,看看为什么答案是25。
ind = mod(data, 2) == 1; %// Should give us an array s.t. [1 0 1 0 1 0 1 0 1 0]
sumOdd = sum(data(ind)); %// Should sum over the following array [1 3 5 7 9]
%// Answer is 25