混沌时间序列参数计算工具箱
混沌时间序列参数计算工具箱,包含时间延迟、嵌入维数、关联维等关键参数的计算程序。
混沌时间序列参数计算工具箱
1. 主函数 - 混沌参数综合分析
function chaos_analysis_results = chaotic_time_series_analysis(time_series, varargin) % 混沌时间序列参数综合分析 % 输入: % time_series - 时间序列数据 % varargin - 可选参数 % 输出: % chaos_analysis_results - 包含所有分析结果的结构体p = inputParser;
addRequired(p, 'time_series', @isnumeric);
addParameter(p, 'max_delay', 50, @isnumeric);
addParameter(p, 'max_dim', 10, @isnumeric);
addParameter(p, 'radius_range', logspace(-3, 0, 50), @isnumeric);
addParameter(p, 'show_plots', true, @islogical);parse(p, time_series, varargin{:});
fprintf('开始混沌时间序列分析...\n');
fprintf('数据长度: %d\n', length(time_series));% 初始化结果结构
results = struct();%% 1. 时间延迟计算
fprintf('计算时间延迟...\n');
[results.tau_autocorr, results.autocorr_func] = calculate_time_delay_autocorr(time_series, p.Results.max_delay);
[results.tau_mutual, results.mutual_info] = calculate_time_delay_mutual(time_series, p.Results.max_delay);%% 2. 嵌入维数计算
fprintf('计算嵌入维数...\n');
[results.embedding_dim, results.fnn_ratio] = calculate_embedding_dimension(time_series, results.tau_mutual, p.Results.max_dim);%% 3. 关联维计算
fprintf('计算关联维...\n');
[results.correlation_dim, results.correlation_integral] = calculate_correlation_dimension(time_series, results.tau_mutual, results.embedding_dim, p.Results.radius_range);%% 4. Lyapunov指数计算
fprintf('计算最大Lyapunov指数...\n');
[results.lyapunov_exponent, results.lyapunov_curve] = calculate_lyapunov_exponent(time_series, results.tau_mutual, results.embedding_dim);%% 5. 其他混沌指标
fprintf('计算其他混沌指标...\n');
results.hurst_exponent = calculate_hurst_exponent(time_series);
[results.approximate_entropy, results.sample_entropy] = calculate_entropy_measures(time_series);%% 6. 可视化结果
if p.Results.show_plots
plot_chaos_analysis_results(results, time_series);
end%% 7. 生成报告
generate_analysis_report(results);
chaos_analysis_results = results;
fprintf('混沌分析完成!\n');
end
2. 时间延迟计算
2.1 自相关函数法
function [optimal_tau, autocorr_values] = calculate_time_delay_autocorr(time_series, max_delay) % 使用自相关函数法计算时间延迟 % 选择自相关函数第一次过零或下降到1-1/e时的延迟n = length(time_series);
autocorr_values = zeros(1, max_delay);% 计算自相关函数
for tau = 1:max_delay
autocorr_values(tau) = abs(corr(time_series(1:end-tau)', time_series(1+tau:end)'));
end% 寻找最优延迟
threshold = 1 - 1/exp(1); % 约0.6321% 方法1: 第一次低于阈值
below_threshold = find(autocorr_values < threshold, 1);
if ~isempty(below_threshold)
optimal_tau = below_threshold;
else
% 方法2: 选择最小值
[~, optimal_tau] = min(autocorr_values);
end
fprintf('自相关函数法 - 最优时间延迟: %d\n', optimal_tau);
end
2.2 互信息法
function [optimal_tau, mutual_info_values] = calculate_time_delay_mutual(time_series, max_delay) % 使用互信息法计算时间延迟 % 选择互信息第一次达到局部最小值时的延迟n = length(time_series);
mutual_info_values = zeros(1, max_delay);% 将时间序列离散化
num_bins = 10; % 直方图箱数
[~, edges] = histcounts(time_series, num_bins);% 计算原始序列的概率分布
px = histcounts(time_series, edges, 'Normalization', 'probability');for tau = 1:max_delay
% 延迟序列
x_t = time_series(1:end-tau);
x_t_tau = time_series(1+tau:end);% 计算联合概率分布
joint_hist = histcounts2(x_t, x_t_tau, edges, edges, 'Normalization', 'probability');
py = histcounts(x_t_tau, edges, 'Normalization', 'probability');% 计算互信息
mi = 0;
for i = 1:num_bins
for j = 1:num_bins
if joint_hist(i,j) > 0 && px(i) > 0 && py(j) > 0
mi = mi + joint_hist(i,j) * log(joint_hist(i,j) / (px(i) * py(j)));
end
end
endmutual_info_values(tau) = mi;
end% 寻找第一个局部最小值
optimal_tau = find_first_local_minimum(mutual_info_values);if isempty(optimal_tau)
optimal_tau = 1; % 默认值
endfprintf('互信息法 - 最优时间延迟: %d\n', optimal_tau);
end
function min_idx = find_first_local_minimum(data)
% 寻找第一个局部最小值
for i = 2:length(data)-1
if data(i) < data(i-1) && data(i) < data(i+1)
min_idx = i;
return;
end
end
min_idx = [];
end
3. 嵌入维数计算
function [optimal_dim, fnn_ratio] = calculate_embedding_dimension(time_series, tau, max_dim) % 使用伪最近邻法计算嵌入维数 % 当伪最近邻比例低于阈值时的最小维数即为最优嵌入维数n = length(time_series);
fnn_ratio = zeros(1, max_dim);% 计算每个嵌入维数的伪最近邻比例
for m = 1:max_dim
% 重构相空间
embedded_data = phase_space_reconstruction(time_series, m, tau);% 寻找最近邻
[fnn_ratio(m), ~] = calculate_fnn_ratio(embedded_data, m);fprintf('嵌入维数 %d: 伪最近邻比例 = %.4f\n', m, fnn_ratio(m));
end% 选择伪最近邻比例低于阈值的最小维数
threshold = 0.1; % 常用阈值
below_threshold = find(fnn_ratio < threshold, 1);if ~isempty(below_threshold)
optimal_dim = below_threshold;
else
% 选择变化平缓的点
diff_ratio = diff(fnn_ratio);
if any(diff_ratio < 0.01)
optimal_dim = find(diff_ratio < 0.01, 1) + 1;
else
optimal_dim = max_dim;
end
endfprintf('最优嵌入维数: %d\n', optimal_dim);
endfunction embedded_data = phase_space_reconstruction(time_series, m, tau)
% 相空间重构
n = length(time_series);
embedded_length = n - (m-1)*tau;embedded_data = zeros(embedded_length, m);
for i = 1:embedded_length
for j = 1:m
embedded_data(i, j) = time_series(i + (j-1)*tau);
end
end
endfunction [fnn_ratio, neighbors] = calculate_fnn_ratio(embedded_data, m)
% 计算伪最近邻比例[n_points, ~] = size(embedded_data);
% 寻找每个点的最近邻
distances = zeros(n_points, 1);
neighbor_indices = zeros(n_points, 1);for i = 1:n_points
% 计算到其他点的距离(排除自身)
dist = zeros(n_points, 1);
for j = 1:n_points
if i ~= j
dist(j) = norm(embedded_data(i, 😃 - embedded_data(j, 😃);
else
dist(j) = inf;
end
end[min_dist, min_idx] = min(dist);
distances(i) = min_dist;
neighbor_indices(i) = min_idx;
end% 计算伪最近邻比例
fnn_count = 0;
threshold = 10; % 常用阈值for i = 1:n_points
current_point = embedded_data(i, 😃;
neighbor_point = embedded_data(neighbor_indices(i), 😃;% 计算距离比
if m > 1
% 在m-1维空间中的距离
dist_m_minus_1 = norm(current_point(1:end-1) - neighbor_point(1:end-1));
dist_m = distances(i);if dist_m_minus_1 > 0
ratio = abs(dist_m - dist_m_minus_1) / dist_m_minus_1;
if ratio > threshold
fnn_count = fnn_count + 1;
end
end
end
end
fnn_ratio = fnn_count / n_points;
neighbors = neighbor_indices;
end
4. 关联维计算
function [correlation_dim, corr_integral] = calculate_correlation_dimension(time_series, tau, m, radius_range) % 使用G-P算法计算关联维% 重构相空间
embedded_data = phase_space_reconstruction(time_series, m, tau);
[n_points, ~] = size(embedded_data);corr_integral = zeros(length(radius_range), 1);
% 计算关联积分
for r_idx = 1:length(radius_range)
r = radius_range(r_idx);
count = 0;% 使用随机采样来加速计算
sample_size = min(1000, n_points);
sample_indices = randperm(n_points, sample_size);for i = 1:sample_size
idx_i = sample_indices(i);
for j = i+1:sample_size
idx_j = sample_indices(j);
distance_ij = norm(embedded_data(idx_i, 😃 - embedded_data(idx_j, 😃);
if distance_ij < r
count = count + 1;
end
end
end% 计算关联积分
corr_integral(r_idx) = 2 * count / (sample_size * (sample_size - 1));
end% 寻找线性区域并计算关联维
[correlation_dim, scaling_region] = estimate_correlation_dimension(radius_range, corr_integral);fprintf('关联维数: %.4f\n', correlation_dim);
endfunction [correlation_dim, scaling_region] = estimate_correlation_dimension(radius, corr_integral)
% 估计关联维数 - 通过线性区域的斜率% 对数变换
log_r = log10(radius);
log_c = log10(corr_integral);% 移除无效点(零或负值)
valid_idx = isfinite(log_r) & isfinite(log_c) & log_c > -inf;
log_r_valid = log_r(valid_idx);
log_c_valid = log_c(valid_idx);if length(log_r_valid) < 10
correlation_dim = 0;
scaling_region = [];
return;
end% 寻找线性区域(通过滑动窗口)
window_size = 10;
max_slope = -inf;
best_start = 1;for i = 1:length(log_r_valid)-window_size+1
window_r = log_r_valid(i:i+window_size-1);
window_c = log_c_valid(i:i+window_size-1);% 线性拟合
p = polyfit(window_r, window_c, 1);
slope = p(1);% 检查拟合质量
residuals = window_c - polyval(p, window_r);
r_squared = 1 - sum(residuals.^2) / sum((window_c - mean(window_c)).^2);if slope > max_slope && r_squared > 0.9
max_slope = slope;
best_start = i;
end
end
% 使用最佳线性区域计算关联维
scaling_region = best_start:best_start+window_size-1;
p_final = polyfit(log_r_valid(scaling_region), log_c_valid(scaling_region), 1);
correlation_dim = p_final(1);
end
5. Lyapunov指数计算
function [lyapunov_exp, divergence_curve] = calculate_lyapunov_exponent(time_series, tau, m) % 计算最大Lyapunov指数 - 使用小数据量法% 重构相空间
embedded_data = phase_space_reconstruction(time_series, m, tau);
[n_points, ~] = size(embedded_data);% 参数设置
min_neighbors = 5;
evolution_steps = min(50, floor(n_points/10));% 为每个点寻找最近邻
divergence = zeros(evolution_steps, 1);
count = zeros(evolution_steps, 1);for i = 1:n_points-evolution_steps
% 当前点
current_point = embedded_data(i, 😃;% 寻找最近邻(排除太近的点)
distances = zeros(n_points, 1);
for j = 1:n_points
if abs(i - j) > evolution_steps % 避免时间相关
distances(j) = norm(current_point - embedded_data(j, 😃);
else
distances(j) = inf;
end
end[~, neighbor_indices] = mink(distances, min_neighbors);
% 追踪每个最近邻的演化
for k = 1:min_neighbors
neighbor_idx = neighbor_indices(k);
initial_distance = norm(embedded_data(i, 😃 - embedded_data(neighbor_idx, 😃);if initial_distance > 0
for step = 1:min(evolution_steps, n_points-max(i, neighbor_idx))
d_i = i + step;
d_j = neighbor_idx + step;if d_j <= n_points
current_distance = norm(embedded_data(d_i, 😃 - embedded_data(d_j, 😃);
if current_distance > 0
divergence(step) = divergence(step) + log(current_distance / initial_distance);
count(step) = count(step) + 1;
end
end
end
end
end
end% 计算平均发散率
valid_steps = count > 0;
divergence_curve = zeros(size(divergence));
divergence_curve(valid_steps) = divergence(valid_steps) ./ count(valid_steps);% 线性拟合得到Lyapunov指数
time_steps = (1:evolution_steps)';
valid_range = find(valid_steps & time_steps > 0 & time_steps < evolution_steps/2);if length(valid_range) > 5
p = polyfit(time_steps(valid_range), divergence_curve(valid_range), 1);
lyapunov_exp = p(1);
else
lyapunov_exp = 0;
end
fprintf('最大Lyapunov指数: %.6f\n', lyapunov_exp);
end
6. 其他混沌指标
function hurst_exp = calculate_hurst_exponent(time_series) % 计算Hurst指数 - 重标极差法(R/S方法)n = length(time_series);
max_window = floor(n/10);
window_sizes = unique(round(logspace(log10(10), log10(max_window), 20)));rs_values = zeros(length(window_sizes), 1);
for i = 1:length(window_sizes)
window_size = window_sizes(i);
num_windows = floor(n / window_size);window_rs = zeros(num_windows, 1);
for j = 1:num_windows
start_idx = (j-1)window_size + 1;
end_idx = jwindow_size;
window_data = time_series(start_idx:end_idx);% 计算累积偏差
mean_val = mean(window_data);
deviations = window_data - mean_val;
cumulative_deviations = cumsum(deviations);% 范围
R = max(cumulative_deviations) - min(cumulative_deviations);
S = std(window_data);if S > 0
window_rs(j) = R / S;
else
window_rs(j) = 0;
end
endrs_values(i) = mean(window_rs(window_rs > 0));
end% 线性拟合得到Hurst指数
valid_idx = rs_values > 0 & window_sizes' > 0;
if sum(valid_idx) > 3
p = polyfit(log(window_sizes(valid_idx)), log(rs_values(valid_idx)), 1);
hurst_exp = p(1);
else
hurst_exp = 0.5;
endfprintf('Hurst指数: %.4f\n', hurst_exp);
endfunction [approx_entropy, sample_entropy] = calculate_entropy_measures(time_series)
% 计算近似熵和样本熵m = 2; % 嵌入维数
r = 0.2 * std(time_series); % 容忍度% 近似熵
approx_entropy = approximate_entropy(time_series, m, r);% 样本熵
sample_entropy = sample_entropy_calc(time_series, m, r);fprintf('近似熵: %.4f, 样本熵: %.4f\n', approx_entropy, sample_entropy);
endfunction apen = approximate_entropy(data, m, r)
% 计算近似熵
n = length(data);% 重构相空间
embedded_m = zeros(n-m+1, m);
for i = 1:n-m+1
embedded_m(i, 😃 = data(i:i+m-1);
end% 计算距离矩阵
phi_m = calculate_phi(embedded_m, n-m+1, r);% 对于m+1
embedded_m1 = zeros(n-m, m+1);
for i = 1:n-m
embedded_m1(i, 😃 = data(i:i+m);
endphi_m1 = calculate_phi(embedded_m1, n-m, r);
% 计算近似熵
apen = log(phi_m / phi_m1);
endfunction phi = calculate_phi(embedded_data, n, r)
% 计算Phi函数
count = zeros(n, 1);for i = 1:n
for j = 1:n
if i ~= j
if max(abs(embedded_data(i, 😃 - embedded_data(j, 😃)) <= r
count(i) = count(i) + 1;
end
end
end
endC = count / (n-1);
phi = mean(C);
endfunction sampen = sample_entropy_calc(data, m, r)
% 计算样本熵
n = length(data);% 重构相空间 - m维
embedded_m = zeros(n-m, m);
for i = 1:n-m
embedded_m(i, 😃 = data(i:i+m-1);
end% 计算匹配数 - m维
A = 0;
for i = 1:n-m
for j = i+1:n-m
if max(abs(embedded_m(i, 😃 - embedded_m(j, 😃)) <= r
A = A + 1;
end
end
end% 重构相空间 - m+1维
embedded_m1 = zeros(n-m-1, m+1);
for i = 1:n-m-1
embedded_m1(i, 😃 = data(i:i+m);
end% 计算匹配数 - m+1维
B = 0;
for i = 1:n-m-1
for j = i+1:n-m-1
if max(abs(embedded_m1(i, 😃 - embedded_m1(j, 😃)) <= r
B = B + 1;
end
end
end
% 计算样本熵
if B > 0 && A > 0
sampen = -log(B / A);
else
sampen = 0;
end
end
7. 可视化函数
function plot_chaos_analysis_results(results, time_series) % 绘制混沌分析结果figure('Position', [100, 100, 1400, 1000]);
% 原始时间序列
subplot(3, 4, 1);
plot(time_series, 'b-', 'LineWidth', 1);
title('原始时间序列');
xlabel('时间');
ylabel('幅值');
grid on;% 自相关函数
subplot(3, 4, 2);
plot(1:length(results.autocorr_func), results.autocorr_func, 'ro-', 'LineWidth', 1.5);
hold on;
plot([results.tau_autocorr, results.tau_autocorr], [0, 1], 'r--', 'LineWidth', 2);
title('自相关函数法');
xlabel('延迟');
ylabel('自相关');
legend('自相关', '最优延迟', 'Location', 'best');
grid on;% 互信息
subplot(3, 4, 3);
plot(1:length(results.mutual_info), results.mutual_info, 'go-', 'LineWidth', 1.5);
hold on;
plot([results.tau_mutual, results.tau_mutual], [0, max(results.mutual_info)], 'g--', 'LineWidth', 2);
title('互信息法');
xlabel('延迟');
ylabel('互信息');
legend('互信息', '最优延迟', 'Location', 'best');
grid on;% 伪最近邻
subplot(3, 4, 4);
plot(1:length(results.fnn_ratio), results.fnn_ratio, 'bo-', 'LineWidth', 1.5);
hold on;
plot([results.embedding_dim, results.embedding_dim], [0, max(results.fnn_ratio)], 'b--', 'LineWidth', 2);
title('伪最近邻法');
xlabel('嵌入维数');
ylabel('伪最近邻比例');
legend('FNN比例', '最优维数', 'Location', 'best');
grid on;% 关联维
subplot(3, 4, 5);
loglog(results.correlation_integral.radius, results.correlation_integral.C, 'mo-', 'LineWidth', 1.5);
title('关联积分');
xlabel('距离 r');
ylabel('关联积分 C(r)');
grid on;% 双对数图
subplot(3, 4, 6);
plot(log10(results.correlation_integral.radius), log10(results.correlation_integral.C), 'mo-', 'LineWidth', 1.5);
title('关联维计算');
xlabel('log(r)');
ylabel('log(C(r))');
grid on;% Lyapunov指数
subplot(3, 4, 7);
plot(1:length(results.lyapunov_curve), results.lyapunov_curve, 'co-', 'LineWidth', 1.5);
title('Lyapunov指数计算');
xlabel('演化步数');
ylabel('平均发散率');
grid on;% 相空间重构 (3D)
if results.embedding_dim >= 3
subplot(3, 4, 8);
embedded_3d = phase_space_reconstruction(time_series, 3, results.tau_mutual);
plot3(embedded_3d(:,1), embedded_3d(:,2), embedded_3d(:,3), 'b-', 'LineWidth', 0.5);
title('相空间重构 (3D)');
grid on;
end% 结果汇总
subplot(3, 4, [9, 10, 11, 12]);
text(0.1, 0.9, sprintf('混沌参数分析结果汇总:'), 'FontSize', 12, 'FontWeight', 'bold');
text(0.1, 0.7, sprintf('时间延迟 (自相关法): %d', results.tau_autocorr), 'FontSize', 10);
text(0.1, 0.6, sprintf('时间延迟 (互信息法): %d', results.tau_mutual), 'FontSize', 10);
text(0.1, 0.5, sprintf('嵌入维数: %d', results.embedding_dim), 'FontSize', 10);
text(0.1, 0.4, sprintf('关联维数: %.4f', results.correlation_dim), 'FontSize', 10);
text(0.1, 0.3, sprintf('最大Lyapunov指数: %.6f', results.lyapunov_exponent), 'FontSize', 10);
text(0.1, 0.2, sprintf('Hurst指数: %.4f', results.hurst_exponent), 'FontSize', 10);
text(0.1, 0.1, sprintf('近似熵: %.4f, 样本熵: %.4f', results.approximate_entropy, results.sample_entropy), 'FontSize', 10);% 混沌特性判断
if results.lyapunov_exponent > 0
chaos_status = '具有混沌特性';
else
chaos_status = '无显著混沌特性';
end
text(0.5, 0.9, sprintf('系统状态: %s', chaos_status), 'FontSize', 12, 'Color', 'red', 'FontWeight', 'bold');axis off;
endfunction generate_analysis_report(results)
% 生成分析报告fprintf('\n=== 混沌时间序列分析报告 ===\n');
fprintf('1. 时间延迟参数:\n');
fprintf(' - 自相关函数法: τ = %d\n', results.tau_autocorr);
fprintf(' - 互信息法: τ = %d\n', results.tau_mutual);fprintf('2. 嵌入参数:\n');
fprintf(' - 最优嵌入维数: m = %d\n', results.embedding_dim);fprintf('3. 分形特性:\n');
fprintf(' - 关联维数: D₂ = %.4f\n', results.correlation_dim);
fprintf(' - Hurst指数: H = %.4f\n', results.hurst_exponent);fprintf('4. 动力学特性:\n');
fprintf(' - 最大Lyapunov指数: λ₁ = %.6f\n', results.lyapunov_exponent);
fprintf(' - 近似熵: %.4f\n', results.approximate_entropy);
fprintf(' - 样本熵: %.4f\n', results.sample_entropy);% 混沌判断
fprintf('5. 混沌特性判断:\n');
if results.lyapunov_exponent > 0
fprintf(' - 系统具有混沌特性 (λ₁ > 0)\n');
if results.correlation_dim > 0 && ~isinf(results.correlation_dim)
fprintf(' - 系统具有分形吸引子\n');
end
else
fprintf(' - 系统无显著混沌特性\n');
end
fprintf('================================\n\n');
end
8. 使用示例和测试
function chaos_analysis_demo() % 混沌时间序列分析演示fprintf('混沌时间序列参数计算工具箱演示\n');
% 生成测试数据
fprintf('生成测试时间序列...\n');% 1. Lorenz系统
lorenz_data = generate_lorenz_system(1000);% 2. 混沌逻辑映射
logistic_data = generate_logistic_map(0.4, 3.9, 1000);% 3. 随机序列
random_data = randn(1000, 1);% 分析Lorenz系统
fprintf('\n分析Lorenz系统:\n');
results_lorenz = chaotic_time_series_analysis(lorenz_data(:,1), 'max_delay', 30, 'max_dim', 8);% 分析逻辑映射
fprintf('\n分析混沌逻辑映射:\n');
results_logistic = chaotic_time_series_analysis(logistic_data, 'max_delay', 20, 'max_dim', 6);% 分析随机序列
fprintf('\n分析随机序列:\n');
results_random = chaotic_time_series_analysis(random_data, 'max_delay', 20, 'max_dim', 6);% 比较结果
compare_results(results_lorenz, results_logistic, results_random);
endfunction lorenz_data = generate_lorenz_system(n_points)
% 生成Lorenz系统数据
sigma = 10;
rho = 28;
beta = 8/3;dt = 0.01;
x = zeros(n_points, 1);
y = zeros(n_points, 1);
z = zeros(n_points, 1);% 初始条件
x(1) = 1; y(1) = 1; z(1) = 1;% 数值积分
for i = 1:n_points-1
dx = sigma * (y(i) - x(i));
dy = x(i) * (rho - z(i)) - y(i);
dz = x(i) * y(i) - beta * z(i);x(i+1) = x(i) + dx * dt;
y(i+1) = y(i) + dy * dt;
z(i+1) = z(i) + dz * dt;
endlorenz_data = [x, y, z];
endfunction logistic_data = generate_logistic_map(x0, r, n_points)
% 生成逻辑映射数据
logistic_data = zeros(n_points, 1);
logistic_data(1) = x0;for i = 2:n_points
logistic_data(i) = r * logistic_data(i-1) * (1 - logistic_data(i-1));
end
endfunction compare_results(results1, results2, results3)
% 比较不同系统的分析结果fprintf('\n=== 不同系统混沌特性比较 ===\n');
fprintf('系统\t\tLyapunov指数\t关联维数\tHurst指数\t混沌特性\n');
fprintf('----------------------------------------------------------------\n');systems = {'Lorenz系统', '逻辑映射', '随机序列'};
results = {results1, results2, results3};for i = 1:3
lyap = results{i}.lyapunov_exponent;
corr_dim = results{i}.correlation_dim;
hurst = results{i}.hurst_exponent;if lyap > 0
chaos_char = '是';
else
chaos_char = '否';
end
fprintf('%-12s\t%.6f\t\t%.4f\t\t%.4f\t\t%s\n', ...
systems{i}, lyap, corr_dim, hurst, chaos_char);
end
end
参考工具箱 含有各种混沌时间序列参数(时间延迟,嵌入维数,关联维等)计算程序 www.3dddown.com/cna/82714.html
工具箱特性总结
| 功能模块 | 计算方法 | 输出参数 |
|---|---|---|
| 时间延迟 | 自相关函数法、互信息法 | 最优延迟τ |
| 嵌入维数 | 伪最近邻法 | 最优嵌入维数m |
| 关联维数 | G-P算法 | 关联维D₂ |
| Lyapunov指数 | 小数据量法 | 最大Lyapunov指数λ₁ |
| 其他指标 | R/S法、熵计算 | Hurst指数、近似熵、样本熵 |
浙公网安备 33010602011771号