还是策略代码感觉好一些。

include("D:\\strategyJulia\\juliaWork\\mccfun.jl")
using Gadflydata = readcsv("C:\\Users\\Desktop\\return3.csv")x_column =1;
y_column =2;
X     = log(data[2:end,x_column]./data[1:end-1,x_column])
Y     = log(data[2:end,y_column]./data[1:end-1,y_column])
S     = collect(12:2:170)
q     = 10.0
model = 0
@time  fq   = FQ(X,Y,S,q,model)println("q: $q  model: $model");
ln_fq   =log((abs(fq)).^(1/q));
ln_s    =log(S)@time Gadfly.plot(x=ln_s,y=ln_fq)
#"D:\\strategyJulia\\juliaWork\\mccfun.jl"`
function FQ{T<:Real}(X::Array{T,1},Y::Array{T,1},S::Int64,q::Array{T,1},model::Int64)data  = Float64[];for qval in qif model==0val = FQ_old(X,Y,S,qval); # oldelseval = FQ(X,Y,S,qval); # newendpush!(data,val)endreturn data;
end
function FQ{T<:Real}(X::Array{T,1},Y::Array{T,1},S::Array{Int64,1},q::T,model::Int64)data  = Float64[];for s in Sif model==0val = FQ_old(X,Y,s,q); # oldelseval = FQ(X,Y,s,q); # newendpush!(data,val)endreturn data;
end
function FQ{T<:Real}(X::Array{T,1},Y::Array{T,1},S::Int64,q::T) #newtotal    = 0.0lengthX  = length(X)lengthY  = length(Y)lengthX != lengthY && error("FQ : LengthX :$LengthX != LengthY: $LengthY") # 防范两个序列长短不一MS       = floor(Int64,div(lengthX,S))for i = 1 : 2MS  # 建议放成二段F2_value   = F2(X,Y,S,i,1); #1 : new modelval_sign   = sign(F2_value ) #if q != 0.0val_q   = (abs(F2_value))^(q/2)elseval_q   = log(abs(F2_xyVS))endtotal = total + val_sign * val_qendreturn total/(2MS)
end
function FQ_old{T<:Real}(X::Array{T,1},Y::Array{T,1},S::Int64,q::T) # old modeltotal    = 0.0lengthX  = length(X)lengthY  = length(Y)lengthX != lengthY && error("FQ : LengthX :$LengthX != LengthY: $LengthY") # 防范两个序列长短不一MS       = floor(Int64,div(lengthX,S))for i = 1 : 2 * MS  # 建议放成二段F2_xyVS    = F2(X,Y,S,i,0); # #println("F2value :$F2_xyVS")if q != 0.0val_q   = (F2_xyVS)^(q/2)elseval_q   = log(F2_xyVS)endtotal = total + val_qendif q!= 0.0return (total/(2*MS))^(1/q)elsereturn exp(total/(4*MS))end
end
function F2{T<:Real}(X::Array{T,1},Y::Array{T,1},S::Int64,Lammda::Int64,model::Int64)# S: 长度# lammda: 第几段数据# model: 0;1 ;         0:       old model =>abstotal          = 0.0X_parts        = getParts(X,S) # 生成X序列 长度为S的段序列数据(DICT结构),X_Lammda_Parts = X_parts[Lammda] #取出 X段序列中第Lammda段的数据,(接下来要去多项式拟合,并取出第I个值)Y_parts        = getParts(Y,S) #Y_Lammda_parts = Y_parts[Lammda]lengthX  = length(X)lengthY  = length(Y)lengthX != lengthY && error("F2 : LengthX :$LengthX != LengthY: $LengthY") # 防范两个序列长短不一MS       = floor(Int64,div(lengthX,S))for i = 1 :Sif Lammda <= MS  # 第一段groupValue_x = getFirstGroupValue(X,S,Lammda,i);groupValue_y = getFirstGroupValue(Y,S,Lammda,i);else  # 第二段groupValue_x = getSecondGroupValue(X,S,Lammda,i);groupValue_y = getSecondGroupValue(Y,S,Lammda,i);endx_value = groupValue_x - polyfit2Value(X_Lammda_Parts,i)y_value = groupValue_y - polyfit2Value(Y_Lammda_parts,i)if model== 0total   = total + abs(x_value * y_value); # old modelelsetotal   = total + x_value * y_value; # new modelendendvdata = total/S;#println("F2 value : $vdata S:$S Lammda: $Lammda ")
   return vdata;
end
function polyfit2{T<:Real}( y::Array{T,1})# 用于曲线拟合,多项式拟合曲线# y 是自变变# X 是因变量,默认为【1 2 3 4 5 6 7 8。。。】# 注意可能会存在y是行向量还是列向量,会对X有影响。# 输出格式是:C +BX+A*X^2 =>[C,B,A] 模式# 已经测试过,无误!data =[-0.5,-1,-0.5,1,3.5,7,11.5,17,23.5,31,39.5,49,59.5,71,83.5,97,111.5]x = [i for i =1:length(y)]n = 2 # 2 阶多项式A = [ float(x[i])^p for i = 1:length(x), p = 0:n ]return A \ y
end
###
function polyfit2Value(y::Array{Float64,1})# 多项式拟合,并救出指定拟合值中第k个值data = Float64[]coff = polyfit2(y);x    = [i for i =1:length(y)]for k in xkval =x[k]value = coff[3] * kval^2 + coff[2]* kval + coff[1]push!(data,value)end# 输出格式是:C +BX+A*X^2 =>[C,B,A] 模式return data;
end
function polyfit2Value(y::Array{Float64,1},k::Int64)# 多项式拟合,并救出指定拟合值中第k个值data = polyfit2Value(y);# 输出格式是:C +BX+A*X^2 =>[C,B,A] 模式return data[k]
end
#data =[0.5,1,-0.5,1,7,11.5,-17,23.5,-31,39.5,49,3.5,59.5,-71,-83.5,-97,-111.5]
#polyfit2(data)
#polyfit2Value(data,1)
function getCumSumValue{T<:Real}(data::Array{T,1},serie::Int64)# 累计求值,到Nmean_data = Base.mean(data);sum_data  = 0.0Len       = length(data)(serie > Len || serie <1 ) && error("getCumSumValue: serie range error! :$serie  data Len :$Len ") # 参数范围设定for i = 1:seriesum_data = sum_data + (data[i]-mean_data)endreturn sum_data;
end
function getFirstGroupValue{T<:Real}(data::Array{T,1},S::Int64,Lammda::Int64,j::Int64)# 每段长度S,#println("First")j >S && error("getFirstGroupValue : j: $j > S :$S");N          = length(data);NumOfSingleParts = floor(Int64,div(N,S));if Lammda <= NumOfSinglePartsserie = (Lammda-1)*S + j;  #(serie <1 ||serie> N) && error("getFirstGroupValue : (serie:$serie <1 ||serie:$serie > N:$N)")else#println("getFirstGroupValue: j:$j S: $S N :$N Lammda: $Lammda ")error("getFirstGroupValue: Lammda:$Lammda > NumOfSingleParts: $NumOfSingleParts")endvdata = getCumSumValue(data,serie)#println("FirstGroupValue: $vdata S:$S Lammda:$Lammda j:$j  serie:$serie N:$N ")return vdata;
end
function getSecondGroupValue{T<:Real}(data::Array{T,1},S::Int64,Lammda::Int64,j::Int64)# data =>倒序# 每段长度S,# 取出第J个值#println("Second")j >S && error("getSecondGroupValue : j: $j > S :$S");#rdata      = reverse!(copy(data)) # 只COPY值,不改变dataN          = length(data);NumOfSingleParts = floor(Int64,div(N,S));Lammda > 2*NumOfSingleParts && error("getSecondGroupValue: Lammda: $Lammda > 2*NumOfSingleParts: 2*($NumOfSingleParts)")if Lammda > NumOfSinglePartsserie = N -(Lammda-NumOfSingleParts) * S + j;#println("getSecondGroupValue: serie: $serie  ")if serie > N ||serie < 1error("getSecondGroupValue : serie: $serie > N: $N  !  or serie < 1")endelseprintln("getSecondGroupValue: j:$j S: $S N :$N Lammda: $Lammda ")if Lammda < NumOfSinglePartserror("getSecondGroupValue: Lammda:$Lammda < NumOfSingleParts: $NumOfSingleParts")elseif Lammda > 2*NumOfSinglePartserror("getSecondGroupValue: Lammda:$Lammda > 2* NumOfSingleParts: $(2*NumOfSingleParts)")endendvdata = getCumSumValue(data,serie) # no reverse  bug??#println("SecondGroupValue: $vdata S:$S Lammda:$Lammda j:$j  serie: $serie")return vdata;
end
function getParts{T<:Real}(data::Array{T,1},S::Int64)# 数据进行切S段,# 个数: 2* floor(N/S);向量组构成的DICT# 【1,2,3,4,5,6,7】 =》【1,2,3,4】 和【7,6,5,4】N = length(data)S>N && error(" S>N S:$S N: $N ");singlePart = floor(Int64,N/S)NumOfParts = 2*singlePart;dictData   = Dict{Int64,Array{T,1}}();rdata      = reverse!(copy(data))for i = 1:NumOfPartsif i <=singlePart  # 第一圈  1# 【1,...S; S+1,...2S,】setindex!(dictData,copy(data[(i-1)*S+1:i*S]),i)else# rdata ,reverse 2j = i-singlePartsetindex!(dictData,copy(rdata[(j-1)*S+1:j*S]),i)endendreturn dictData
end

Julia: MFDCCA和MFCCA算法代码相关推荐

  1. 刘知远:近年来开源的算法代码、工具包列表

    来源:知乎 作者:刘知远 本文多图,建议阅读5分钟. 本文为你分享刘知远老师和学生整理的三十来项算法代码和工具包列表. 刚花半天功夫整理了最近几年和同学努力开源的三十来项算法代码和工具包列表( htt ...

  2. c 语言乘法代码,C++实现大数乘法算法代码

    C++实现大数乘法算法代码 //大数乘法算法 #include #include #include using namespace std; int main() { string num1,num2 ...

  3. LDPC译码算法代码概述

    程序说明 V0.0 2015/1/24 LDPC译码算法代码概述 概述 本文介绍了包括LDPC_Simulation.m, ldpcdecoderbp1.m,ldpcdecoderminsum.m, ...

  4. 曼哈顿距离java实现_基于javascript实现获取最短路径算法代码实例

    这篇文章主要介绍了基于javascript实现获取最短路径算法代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 代码如下 //A算法 自动寻路 ...

  5. 运行iDT算法代码及后续特征编码

    DT&IDT算法应该算是行为识别领域中经典中的经典了,自从13年提出以来,在HMDB-51和UCF-101等若干个数据库上得到了非常好的效果,虽然DT&IDT算法做不过深度学习,但是由 ...

  6. 统计学习方法第六章作业:逻辑斯谛梯度下降法、最大熵模型 IIS / DFP 算法代码实现

    逻辑斯谛梯度下降法 import numpy as np import matplotlib.pyplot as pltclass logist:def __init__(self,a=1,c=Non ...

  7. 算法代码[置顶] 机器学习实战之KNN算法详解

    改章节笔者在深圳喝咖啡的时候突然想到的...之前就有想写几篇关于算法代码的文章,所以回家到以后就奋笔疾书的写出来发表了     前一段时间介绍了Kmeans聚类,而KNN这个算法刚好是聚类以后经常使用 ...

  8. java斐波那契查找_详解Java Fibonacci Search斐波那契搜索算法代码实现

    一, 斐波那契搜索算法简述 斐波那契搜索(Fibonacci search) ,又称斐波那契查找,是区间中单峰函数的搜索技术. 斐波那契搜索采用分而治之的方法,其中我们按照斐波那契数列对元素进行不均等 ...

  9. 算法代码_Python进化算法之多目标优化与代码实战

    前言 自从上三篇博客详细讲解了Python遗传和进化算法工具箱及其在带约束的单目标函数值优化中的应用.利用遗传算法求解有向图的最短路径.利用进化算法优化SVM参数之后,这篇不再局限于单一的进化算法工具 ...

  10. 算法代码块总结(持续更新)

    算法代码块 素数 /*** 判断素数代码块* @param n 带判断数* @return 判断结果*/ public static boolean isPrime(long n) {if (n &l ...

最新文章

  1. OpenResty中的upstream healthcheck功能沉思录
  2. 设置 JAVA_HOME
  3. Android studio使用git切换分支开发的方法(图文教程)
  4. JNDI(datasource)在tomcat,JBOSS下的spring+quartz配置
  5. 【CEOI2017】Building Bridges【任意坐标斜率优化】【李超线段树】
  6. uni-app运行编译报错
  7. 内存优化-如何使用tcmalloc来提升内存性能?提升的结果太不可思议
  8. vscode写java没有提示_VS Code报错Language Support for Java(TM)插件显示需要JDK11 写java代码没有提示...
  9. 终端卡顿优化的全记录
  10. opencv5-图像混合
  11. 两个前置摄像头_W21 5G性能篇 | 五摄像头组合,洞悉画面之美
  12. android 设备注册,i2c_设备注册流程
  13. 【OpenCV入门指南】第四篇 图像的二值化
  14. PLC控制系统设计的基本原则和步骤
  15. MySQL 5.7详细下载安装配置教程
  16. SpringBoot的嵌入式servlet容器
  17. 会员管理系统(一)--页面登陆与注册
  18. Android 华为手机获取相册图片路径,获取不到问题
  19. 抢抓双城发展机遇 新川代表团赴渝交流
  20. 30岁的程序员......

热门文章

  1. 斯坦福大学的Gss Audio Codec 调试分析
  2. 两则新闻的另外一种角度
  3. animate支持的css属性
  4. #0的作用及time slot的划分
  5. AJAX请求和普通HTTP请求区别
  6. java文件读写工具类
  7. 异步将远程链接上的内容(图片或内容)写到本地--微信头像
  8. 最近在做中文的全文检索(中文搜索引擎)
  9. 通过脚本执行sql语句
  10. 关闭SqlConnection的方法