免费高清特黄a大片,九一h片在线免费看,a免费国产一级特黄aa大,国产精品国产主播在线观看,成人精品一区久久久久,一级特黄aa大片,俄罗斯无遮挡一级毛片

分享

通達信dll實現(xiàn)算法三階貝塞爾曲線濾波

 常熟老李jlr5mr 2024-10-22

貝塞曲線,是通過幾個簡單的參數(shù)描述一條曲線的一種參數(shù)曲線。

貝塞爾曲線是由 皮埃爾·貝塞爾 發(fā)明的,目的是輔助做汽車的主體設(shè)計,現(xiàn)如今已經(jīng)被廣泛使用在計算機輔助設(shè)計和計算機圖形學(xué)系統(tǒng)中。

三階貝塞爾曲面參數(shù)方程:

圖片

圖片

首先打開visual studio 2015 或者更高的版本,復(fù)制粘貼

#include <iostream>  #include <cmath> #include <vector> #include <algorithm> void BezierFit(int DataLen, float* pfOUT, in?t* pfINa, float* pfINb) { int controlPointCount = 4; std::vector<float> controlPoints(controlPointCount); int windowSize = (*pfINb); // 計算每個窗口的平均值作為初始控制點位置 for (int i = 0; i < DataLen; i += windowSize) { int windowEnd = (std::min)(i + windowSize, DataLen); float sum = 0.0f; for (int j = i; j < windowEnd; ++j) { sum += pfINa[j]; } float avg = sum / (windowEnd - i); for (int j = 0; j < controlPointCount; ++j) { controlPoints[j] = avg; }
// 使用數(shù)值優(yōu)化方法調(diào)整控制點位置(這里仍然使用簡單的梯度下降法) const int iterationCount = 2000; const float learningRate = 0.01f; for (int iter = 0; iter < iterationCount; ++iter) { std::vector<float> gradient(controlPointCount); for (int j = 0; j < controlPointCount; ++j) { gradient[j] = 0.0f; } for (int j = i; j < windowEnd; ++j) { float t = static_cast<float>(j - i) / (windowEnd - i); float curveValue = (1.0f - t) * (1.0f - t) * (1.0f - t) * controlPoints[0] + 3.0f * t * (1.0f - t) * (1.0f - t) * controlPoints[1] + 3.0f * t * t * (1.0f - t) * controlPoints[2] + t * t * t * controlPoints[3]; float diff = curveValue - pfINa[j]; gradient[0] += (1.0f - t) * (1.0f - t) * (1.0f - t) * diff; gradient[1] += 3.0f * t * (1.0f - t) * (1.0f - t) * diff; gradient[2] += 3.0f * t * t * (1.0f - t) * diff; gradient[3] += t * t * t * diff; } for (int j = 0; j < controlPointCount; ++j) { controlPoints[j] -= learningRate * gradient[j]; } }
// 根據(jù)控制點計算擬合曲線的輸出值 for (int j = i; j < windowEnd; ++j) { float t = static_cast<float>(j - i) / (windowEnd - i); pfOUT[j] = (1.0f - t) * (1.0f - t) * (1.0f - t) * controlPoints[0] + 3.0f * t * (1.0f - t) * (1.0f - t) * controlPoints[1] + 3.0f * t * t * (1.0f - t) * controlPoints[2] + t * t * t * controlPoints[3]; } }}

貝塞爾曲線需要提供幾個點的參數(shù),首先是 曲線的起點和終點。

然后再提供任意數(shù)量的控制點。控制點數(shù)量為 2,則為三階貝塞爾曲線。

圖片

如圖所示

圖片

之后生成Dll文件

最后,在通達信新建指標(biāo),輸入代碼

IF(BARSLAST(FILTER(1,19))+1=1,DRAWNULL,TDXDLL3(1,C,20,20));

展示圖

圖片

證畢

更好的自用指標(biāo),期貨自動化交易程序與股票自動化程序在星球

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多