C++ wMA 算法

CMakeLists.txt

project(aaa)
add_library(aaa SHARED aaa.cpp)
add_executable(bbb bbb.cpp)
target_link_libraries(bbb aaa)

aaa.h

#pragma once

#ifndef AAA_AAA_H
#define AAA_AAA_H
#endif

class father
{
private:
public:
    int *fabonacci(int n);
    double *wMA(double *array, int *fabonacci, int arrayLen, int wMALen);
};

aaa.cpp

#include "aaa.h"
#include <iostream>

using namespace std;

int *father::fabonacci(int n)
{
    if(30 >= n > 0)
    {
        int *array = new int[n];
        switch(n)
        {
            case 1:
            {
                array[0] = 1;
                cout << array[0] << endl;
                break;
            }
            case 2:
            {
                array[0] = 1;
                array[1] = 1;
                cout << array[0] << endl;
                cout << array[1] << endl;
                break;
            }
            default:
            {
                array[0] = 1;
                array[1] = 1;
                cout << array[0] << endl;
                cout << array[1] << endl;
                for(int i = 2; i < n; i++)
                {
                    array[i] = array[i - 1] + array[i - 2];
                    cout << array[i] << endl;
                }
            }
        }
        return array;
    }
    else
    {
        cout << "Error!\n" << endl;
        return NULL;
    }
}

double *father::wMA(double *array, int *fabonacci, int arrayLen, int wMALen)
{
    int n = wMALen;
    double *wma = new double[arrayLen];
    if(arrayLen >= wMALen >0)
    {
        int *pF = father::fabonacci(arrayLen);
        while(arrayLen >= wMALen)
        {
            double sum = 0;
            for(int i = wMALen - n; i < wMALen; i++)
            {
                sum = sum + array[i] * (*(pF + i));
            }
            wma[wMALen - 1] = sum / pF[arrayLen];
            cout << "wma[" << wMALen - 1 << "] = " << wma[wMALen - 1] << endl;
            wMALen++;
        }
        delete(pF);
        return wma;
    }
    else
    {
        cout << "Error!\n" << endl;
        return NULL;
    }
}

bbb.cpp

#include "aaa.h"
#include <iostream>

using namespace std;

template <typename t> int getArrayLen(t &array)
{
    return sizeof(array) / sizeof(array[0]);
}

int main()
{
    double array[] = {1, 2, 3, 4, 5, 6, 7, 8, 10, 9, 11, 12};
    father child;

    int len = getArrayLen(array);
    int *pF = child.fabonacci(len);
    double *pWMA = child.wMA(array, pF, len, 3);

    delete(pF);
    delete(pWMA);

    return 0;
}
时间: 2024-11-04 20:00:04

C++ wMA 算法的相关文章

C++ 以费波纳茨数列为权重的加权均值计算方法 wMA

#pragma once #include <iostream> using namespace std; template <typename T> double *wMA(T &tArray, int iWMALen) // 应用模版数据类型 typename T 引用外部数组 tArray { int iArrayLen = sizeof(tArray) / sizeof(tArray[0]); // 计算传入数组长度 = 总数组字节大小 / 首元素字节大小 cout

高频交易算法研发心得--均线算法

今天来探讨一下常见的均线算法的应用.在各种交易软件中,我们常常可以见到MA指标,EMA指标以及SMA指标. 首先说明SMA的二义性,如果您在百度直接搜索SMA指标,指的是带加权的指数平均值:然而,再去查询“简单移动平均线”百度给出的缩写又是SMA.因此,为了明确,科学,本文采用了“维基百科”的说法,其解释如下: MA:又称“移动平均线”简称均线,移动平均可抚平短期波动,反映出长期趋势或周期.数学上,移动平均可视为一种卷积.以笔者的理解,可以认为,MA只是一种类似曲线的统称. SMA:简单移动平均

经典排序算法 - 冒泡排序Bubble sort

 原文出自于 http://www.cnblogs.com/kkun/archive/2011/11/23/bubble_sort.html 经典排序算法 - 冒泡排序Bubble sort 原理是临近的数字两两进行比较,按照从小到大或者从大到小的顺序进行交换, 这样一趟过去后,最大或最小的数字被交换到了最后一位, 然后再从头开始进行两两比较交换,直到倒数第二位时结束,其余类似看例子 例子为从小到大排序, 原始待排序数组| 6 | 2 | 4 | 1 | 5 | 9 | 第一趟排序(外循环) 第

转载:DenseNet算法详解

原文连接:http://blog.csdn.net/u014380165/article/details/75142664 参考连接:http://blog.csdn.net/u012938704/article/details/53468483 本文这里仅当学习笔记使用,具体细节建议前往原文细度. 论文:Densely Connected Convolutional Networks 论文链接:https://arxiv.org/pdf/1608.06993.pdf 代码的github链接:h

基于位置信息的聚类算法介绍及模型选择

百度百科 聚类:将物理或抽象对象的集合分成由类似的对象组成的多个类的过程被称为聚类.由聚类所生成的簇是一组数据对象的集合,这些对象与同一个簇中的对象彼此相似,与其他簇中的对象相异."物以类聚,人以群分",在自然科学和社会科学中,存在着大量的分类问题.聚类分析又称群分析,它是研究(样品或指标)分类问题的一种统计分析方法.聚类分析起源于分类学,但是聚类不等于分类.聚类与分类的不同在于,聚类所要求划分的类是未知的. 分类和聚类算法一直以来都是数据挖掘,机器学习领域的热门课题,因此产生了众多的

密码算法详解——AES

0 AES简介 美国国家标准技术研究所在2001年发布了高级加密标准(AES).AES是一个对称分组密码算法,旨在取代DES成为广泛使用的标准. 根据使用的密码长度,AES最常见的有3种方案,用以适应不同的场景要求,分别是AES-128.AES-192和AES-256.本文主要对AES-128进行介绍,另外两种的思路基本一样,只是轮数会适当增加. 1 算法流程 AES加解密的流程图如下: AES加密过程涉及到4种操作:字节替代(SubBytes).行移位(ShiftRows).列混淆(MixCo

矩阵乘法的Strassen算法详解

题目描述 请编程实现矩阵乘法,并考虑当矩阵规模较大时的优化方法. 思路分析 根据wikipedia上的介绍:两个矩阵的乘法仅当第一个矩阵B的列数和另一个矩阵A的行数相等时才能定义.如A是m×n矩阵和B是n×p矩阵,它们的乘积AB是一个m×p矩阵,它的一个元素其中 1 ≤ i ≤ m, 1 ≤ j ≤ p. 值得一提的是,矩阵乘法满足结合律和分配率,但并不满足交换律,如下图所示的这个例子,两个矩阵交换相乘后,结果变了: 下面咱们来具体解决这个矩阵相乘的问题. 解法一.暴力解法 其实,通过前面的分析

关于SVM数学细节逻辑的个人理解(三) :SMO算法理解

第三部分:SMO算法的个人理解 接下来的这部分我觉得是最难理解的?而且计算也是最难得,就是SMO算法. SMO算法就是帮助我们求解: s.t.   这个优化问题的. 虽然这个优化问题只剩下了α这一个变量,但是别忘了α是一个向量,有m个αi等着我们去优化,所以还是很麻烦,所以大神提出了SMO算法来解决这个优化问题. 关于SMO最好的资料还是论文<Sequential Minimal Optimization A Fast Algorithm for Training Support Vector

基于Spark MLlib平台的协同过滤算法---电影推荐系统

基于Spark MLlib平台的协同过滤算法---电影推荐系统 又好一阵子没有写文章了,阿弥陀佛...最近项目中要做理财推荐,所以,回过头来回顾一下协同过滤算法在推荐系统中的应用. 说到推荐系统,大家可能立马会想到协同过滤算法.本文基于Spark MLlib平台实现一个向用户推荐电影的简单应用.其中,主要包括三部分内容: 协同过滤算法概述 基于模型的协同过滤应用---电影推荐 实时推荐架构分析     一.协同过滤算法概述 本人对算法的研究,目前还不是很深入,这里简单的介绍下其工作原理. 通常,