protected void calculateSignalMagnitudeArea(DataSet first, DataSet second, 
            DataSet third, ArrayList<Float> features)
    {
        int counter = 0;
        float signalMagnitudeArea = 0;
        
        ArrayList<Float> firstDataSet = first.getDataSet(), 
                secondDataSet = second.getDataSet(), 
                thirdDataSet = third.getDataSet();
        
        for (int i = 0; i < firstDataSet.size(); i++)
        {
            if (i < secondDataSet.size() && i < thirdDataSet.size())
            {
                if (firstDataSet.get(i) != null && secondDataSet.get(i) != null
                        && thirdDataSet.get(i) != null)
                {
                    counter++;
                    signalMagnitudeArea += Math.abs(firstDataSet.get(i)) + 
                            Math.abs(secondDataSet.get(i)) + 
                            Math.abs(thirdDataSet.get(i));
                }
            }
        }
        
        featuresName.add(first.getName() + "_" + second.getName() + "_" + 
                    third.getName() + "_" + "SIGNAL_MAGNITUDE_AREA");
        if (counter != 0)
        {
            signalMagnitudeArea /= counter;
            features.add(signalMagnitudeArea);
        }
        else
        {
            features.add(null);
        }
    }