多重分形 MATLAB

简介: 多重分形 MATLAB

用于多重分形分析的MATLAB程序,基于MF-DFA(多重分形去趋势波动分析)方法实现。该程序适用于股市、材料学、医学和岩石物理等领域的一维时间序列分析。

function [hq, tauq, alpha, f_alpha] = MF_DFA(data, q_min, q_max, q_step, scale_min, scale_max, order)
    % 输入参数:
    %   data      : 输入数据 (一维时间序列)
    %   q_min     : q的最小值 (建议: -5)
    %   q_max     : 最大值 (建议: 5)
    %   q_step    : q的步长 (建议: 0.25)
    %   scale_min : 最小尺度 (建议: 10)
    %   scale_max : 最大尺度 (建议: length(data)/4)
    %   order     : 多项式阶数 (1:线性, 2:二次, 3:三次)
    %
    % 输出参数:
    %   hq      : 广义Hurst指数
    %   tauq    : 质量指数 τ(q)
    %   alpha   : 奇异性指数
    %   f_alpha : 多重分形谱 f(α)

    % 参数校验
    if nargin < 7, order = 1; end
    if scale_max > length(data)/4
        warning('scale_max reduced to N/4');
        scale_max = floor(length(data)/4);
    end

    % 生成q向量和尺度向量
    q = q_min:q_step:q_max;
    scales = unique(round(logspace(log10(scale_min), log10(scale_max), 30));

    % 步骤1: 积分序列
    N = length(data);
    Y = cumsum(data - mean(data));

    % 预分配波动函数矩阵
    Fq = zeros(length(scales), length(q));

    % 步骤2-4: 多尺度处理
    for sidx = 1:length(scales)
        s = scales(sidx);
        Ns = floor(N/s);
        segments = 2*Ns;
        F2_segments = zeros(segments, 1);

        % 分割数据段
        for v = 1:segments
            if v <= Ns
                segment = Y((v-1)*s + 1 : v*s);
            else
                segment = Y(N - (v-Ns)*s + 1 : N - (v-Ns-1)*s);
            end

            % 多项式拟合去趋势
            x = (1:s)';
            p = polyfit(x, segment, order);
            fit = polyval(p, x);
            detrended = segment - fit;

            % 计算方差
            F2_segments(v) = mean(detrended.^2);
        end

        % 步骤5: 计算q阶波动函数
        for qidx = 1:length(q)
            q_val = q(qidx);
            if q_val == 0
                Fq(sidx, qidx) = exp(0.5 * mean(log(F2_segments(F2_segments>0))));
            else
                Fq(sidx, qidx) = (mean(F2_segments.^(q_val/2))).^(1/q_val);
            end
        end
    end

    % 步骤6: 计算广义Hurst指数
    hq = zeros(size(q));
    for qidx = 1:length(q)
        log_scales = log10(scales(:));
        log_Fq = log10(Fq(:, qidx));
        p = polyfit(log_scales, log_Fq, 1);
        hq(qidx) = p(1);
    end

    % 步骤7: 计算质量指数
    tauq = q .* hq - 1;

    % 步骤8: 计算多重分形谱
    dtauq = gradient(tauq, q_step);
    alpha = dtauq;
    f_alpha = q .* alpha - tauq;

    % 可视化结果
    figure('Color', 'white', 'Position', [100, 100, 1200, 500])

    subplot(1,3,1)
    plot(q, hq, 'bo-', 'LineWidth', 1.5)
    xlabel('q', 'FontSize', 12)
    ylabel('h(q)', 'FontSize', 12)
    title('广义Hurst指数', 'FontSize', 14)
    grid on

    subplot(1,3,2)
    plot(q, tauq, 'ro-', 'LineWidth', 1.5)
    xlabel('q', 'FontSize', 12)
    ylabel('\tau(q)', 'FontSize', 12)
    title('质量指数', 'FontSize', 14)
    grid on

    subplot(1,3,3)
    plot(alpha, f_alpha, 'ko-', 'LineWidth', 1.5)
    xlabel('\alpha', 'FontSize', 12)
    ylabel('f(\alpha)', 'FontSize', 12)
    title('多重分形谱', 'FontSize', 14)
    grid on

    % 输出多重分形强度
    Delta_alpha = max(alpha) - min(alpha);
    fprintf('多重分形强度 Δα = %.4f\n', Delta_alpha);
end

使用

% 示例1: 布朗运动 (单分形)
data = cumsum(randn(1,5000));
[hq, tauq, alpha, f_alpha] = MF_DFA(data, -5, 5, 0.25, 10, 1000, 2);

% 示例2: 股票收益率 (上证指数)
load('stock_data.mat'); % 加载数据
returns = diff(log(prices)); % 计算对数收益率
[hq, tauq, alpha, f_alpha] = MF_DFA(returns, -5, 5, 0.25, 10, length(returns)/4, 2);

参数说明

  1. 输入参数:

    • data:输入时间序列 (股市价格、医学信号、材料特性数据等)
    • q_min, q_max, q_step:q值范围和步长 (建议范围[-5,5])
    • scale_min, scale_max:尺度范围 (建议10到N/4)
    • order:去趋势多项式阶数 (1-3)
  2. 输出参数:

    • hq:广义Hurst指数,描述不同q值的标度行为
    • tauq:质量指数,表征多重分形特征
    • alpha:奇异性指数
    • f_alpha:多重分形谱,量化不同奇异性水平的分布
  3. 关键输出:

    • 多重分形强度 Δα = max(α) - min(α):
      • Δα≈0:单分形
      • Δα>0:多重分形 (值越大表示多重分形特性越强)

参考代码 多重分形 MATLAB程序 www.youwenfan.com/contentalc/98556.html,可用于股市分析,材料学、医学、岩石物理等领域。

应用领域说明

  1. 股市分析:

    • 分析价格波动的复杂性和风险结构
    • 识别市场状态转变 (单分形→多重分形)
    • 示例:计算股票收益率的Δα,值越大市场越复杂
  2. 材料学:

    • 表征材料表面的粗糙度
    • 分析断裂表面的复杂特性
    • 示例:金属疲劳断口的多重分形谱分析
  3. 医学:

    • EEG/ECG信号复杂性分析
    • 病理状态检测 (如癫痫、心律失常)
    • 示例:健康ECG的Δα < 病态ECG
  4. 岩石物理:

    • 孔隙结构表征
    • 渗流特性分析
    • 示例:砂岩比页岩具有更大的Δα

注意事项

  1. 数据长度应 > 1000点,保证统计可靠性
  2. scale_max 不超过数据长度的1/4
  3. 多重分形强度解释:
    • Δα < 0.05:近似单分形
    • Δα > 0.5:强多重分形
    • 股市危机时期Δα通常增大

此程序提供了多重分形分析的核心实现,用户可通过调整参数适应不同领域数据特性。对于二维图像分析(如材料表面、医学影像),需扩展为二维MF-DFA方法。

相关文章
|
NoSQL Redis C语言
只需要笔记本和一条网线就可以让服务器拥有外网的办法
只需要笔记本和一条网线就可以让服务器拥有外网的办法
只需要笔记本和一条网线就可以让服务器拥有外网的办法
|
存储 并行计算 安全
我们自己的芯片指令集架构——龙芯架构简介
我们自己的芯片指令集架构——龙芯架构简介
3915 6
|
传感器 数据采集 人工智能
《用AI重构工业设备故障预警系统:从“被动维修”到“主动预判”的协作实践》
本文记录了为重型机床企业用AI重构故障预警系统的实践。项目初期面临原系统“事后报警”致单月损失超百万、12类传感器数据繁杂但故障样本稀缺、维修经验难转技术指标的困境,传统开发需2个月且准确率难超70%。团队构建Cursor、通义灵码、豆包、DeepSeek协作矩阵,按场景分工:Cursor优化前后端,通义灵码转经验为特征与模型逻辑,豆包拆解需求与生成手册,DeepSeek优化架构与模型性能。系统25天上线,预警准确率92%、提前35分钟,单月停机减60%,挽回损失超60万,还沉淀SOP,印证了AI协同破解工业设备预警困局、实现从被动维修到主动预判的价值。
911 6
|
存储 自然语言处理 NoSQL
6.4K star!轻松搞定专业领域大模型推理,这个知识增强框架绝了!
🔥「垂直领域大模型落地难?逻辑推理总出错?这个来自OpenSPG的开源框架,让专业领域知识服务变得像搭积木一样简单!」
919 3
|
人工智能 测试技术 API
智谱旗舰模型GLM-4.6开源发布,代码能力对齐Claude Sonnet 4
作为GLM系列的最新版本,GLM-4.6是系列最强的代码Coding模型(较GLM-4.5提升27%)
2711 14
|
Unix API 调度
【python】 一文了解 OS 操作系统交互库简单使用方法
Python的os模块(Operating System Interface)提供了访问操作系统相关功能的接口,它允许程序与底层操作系统交互,对文件系统、进程、套接字等底层操作进行控制。典型的用法是程序打开某个文件时,os库可以帮助我们判断文件是否存在/是否可读/是否可写等等,同时也可以帮助我们创建和删除目录、文件链接等等。os库提供了一系列的函数和方法,用于处理和管理操作系统文件、文件夹,以及运行和控制进程,具体包括以下功能:对文件和目录(文件夹)的操作:包括创建、重命名、删除等等。
1303 0
|
机器学习/深度学习 人工智能 算法
目标检测技术研究现状及发展趋势
随着人工智能、深度学习技术的快速发展,受到深度学习在自然场景图像目标检测中的成功应用的影响,许多学者尝试将深度学习方法应用于图像的目标检测中,基于卷积神经网络的目标检测成为发展趋势。
2465 0
目标检测技术研究现状及发展趋势
|
机器学习/深度学习 人工智能 弹性计算
阿里云AI服务器价格表_GPU服务器租赁费用_AI人工智能高性能计算推理
阿里云AI服务器提供多种配置,包括CPU+GPU、FPGA等,适用于人工智能、机器学习和深度学习等计算密集型任务。本文整理了阿里云GPU服务器的优惠价格,涵盖NVIDIA A10、V100、T4等型号,提供1个月、1年和1小时的收费明细。具体规格如A10卡GN7i、V100-16G卡GN6v等,适用于不同业务场景,详情见官方页面。
1833 11
|
人工智能 开发工具 git
一看就会的智能换颜项目教程!5分钟速通明星大模型开源项目一键部署
有了通义灵码的帮助,很多明星大模型项目实操过程中遇到的问题:查找错误、解释代码、优化代码、查找文档、代码补全等等都可以用通义灵码一键解决,而且准确率很高,加上灵活的实操环境,项目跑起来会非常高效。关键是通义灵码个人版还免费!
|
机器学习/深度学习 边缘计算 5G

热门文章

最新文章