MATLAB:求和奇数整数的模数函数

时间:2014-05-20 04:22:50

标签: matlab numbers modulo

你如何使用模数函数求和奇数?

我能够查看奇数整数,但无法将它们加在一起。

1 个答案:

答案 0 :(得分:2)

如果我正确解释您的问题,您不想使用模数函数来求和奇数整数,但您想使用模数函数来帮助您确定什么是奇数,只对数据集中奇数整数的数字求和。如果您第一眼看到这一点,这就令人困惑,因为它听起来像是要使用模数函数和仅模数函数来求和。

假设您在名为data的向量中有整数。你可以做的是如果你想检查整数是否是奇数,你检查一下除以2后的余数是否为1(即num mod 2 == 1)。回想一下奇数的定义。这意味着您可以获取任何整数,并对其进行表示,以便您可以找到整数k,其中数字可以表示为2k + 1。因此,如果你以2为基数取这个数的模数,你会得到1作为答案。请记住,不适用于否定数字

因此,这些是我建议您采取的步骤:

  1. 找到模数函数为您提供的所有位置1.
  2. 使用这些位置并总结您的数据。
  3. 以下是我将使用的代码:

    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