matlab 程序陷入死循环,请高手指点一下

function[xn,dn]=PhaSpaRecon(s,tau,m,T)%混沌序列的相空间重构(phasespacereconstruction)%[xn,dn,xn... function [xn,dn] = PhaSpaRecon(s,tau,m,T)
% 混沌序列的相空间重构 (phase space reconstruction)
% [xn, dn, xn_cols] = PhaSpaRecon(s, tau, m)
% 输入参数: s 混沌序列(列向量)
% tau 重构时延
% m 重构维数
% T 直接预测步数
% 输出参数: xn 相空间中的点序列(每一列为一个点)
% dn 一步预测的目标(行向量)
s=[0.4900 0.8000 0.0800 0.3200 0.5300 0.7100 0.8700 0.0000 0.1100 0.1900 0.2500 0.3000 0.3300 0.3100 0.2700 0.2200 0.1600 0.0900 0.0000 0.9000 0.7900 0.6700 0.5400 0.4000 0.2400 0.0700 0.8900 0.7000 0.5000 0.2900];
[rows,cols] = size(s);

if (rows>cols)
len = rows;
s = s';
else
len = cols;
end

if (nargin < 4)
T = 1;
end

if (nargout==1)

if (len-(m-1)*tau < 1)
disp('err: delay time or the embedding dimension is too large!')
xn = [];
else
xn = zeros(m,len-(m-1)*tau);
for i = 1:m
xn(i,:) = s(1+(i-1)*tau : len-(m-i)*tau); % 相空间重构,每一行为一个点
end
end

elseif (nargout==2)

if (len-T-(m-1)*tau < 1)
disp('err: delay time or the embedding dimension is too large!')
xn = [];
dn = [];
else
xn = zeros(m,len-T-(m-1)*tau);
for i = 1:m
xn(i,:) = s(1+(i-1)*tau : len-T-(m-i)*tau); % 相空间重构,每一行为一个点
end
dn = s(1+T+(m-1)*tau : end); % 预测的目标
end

end
% 计算混沌时间序列 Lyapunov 指数 - 主函数
function [xn,dn] = PhaSpaRecon(s,tau,m,T)
clc
clear
close all

%-----------------------------------------------------------------
% 产生 Lorenz 混沌时间序列
disp('---------- Lorenz ----------')

sigma = 16; % Lorenz 方程参数 a
b = 4; % b
r = 45.92; % c

y = [-1,0,1]; % 起始点 (1 x 3 的行向量)
h = 0.01; % 积分时间步长

k1 = 10000; % 前面的迭代点数
k2 = 5000; % 后面的迭代点数

z = LorenzData(y,h,k1+k2,sigma,r,b);
x = z(k1+1:end,1); % 时间序列

%-----------------------------------------------------------------
% Lorenz 入口参数

tau = 11; % 时延
m = 3; % 嵌入维
[xn] = PhaSpaRecon(x,tau,m); % 每列为一个点
xn = xn'; % 每行为一个点

taumax = 500; % 最大离散步进时间
P = 100; % 序列平均周期
fs = 100; % 采样频率

Y = lyapunov_luzhenbo(xn,taumax,P,fs);

figure(2)
subplot(211); plot(Y,'+:'); grid; xlabel('i'); ylabel('y(i)'); title('Logistic')
subplot(212); plot(diff(Y),'+:'); grid; xlabel('n'); ylabel('slope');

linear_zone = [70:140]'; % 线性区域
F = polyfit(linear_zone,Y(linear_zone),1);
Lyapunov1 = F(1)
展开
 我来答
taosh19
2010-12-16
知道答主
回答量:75
采纳率:0%
帮助的人:29万
展开全部
1、有2个函数,你没有提供:LorenzData、lyapunov_luzhenbo;

2、在函数PhaSpaRecon的定义文件中,是不是下面5行也在其中:
% 计算混沌时间序列 Lyapunov 指数 - 主函数
function [xn,dn] = PhaSpaRecon(s,tau,m,T)
clc
clear
close all

如果是,要将其删掉;
如果不是,那我不明白,为什么把前面2行列出来;

3、函数PhaSpaRecon 是不会进入死循环的,我确定过;
niahj09
2010-12-16 · TA获得超过1677个赞
知道小有建树答主
回答量:1353
采纳率:0%
帮助的人:729万
展开全部
f=[160 130 220 170 140 130 190 150 190 200 230];
Aeq=[1 1 1 1 0 0 0 0 0 0 0;0 0 0 0 1 1 1 1 0 0 0;0 0 0 0 0 0 0 0 1 1 1];
Beq=[50 60 50];
A=[0 0 0 -1 0 0 0 -1 0 0 0;0 0 0 1 0 0 0 1 0 0 0;-1 0 0 0 -1 0 0 0 -1 0 0;1 0 0 0 1 0 0 0 1 0 0;0 -1 0 0 0 -1 0 0 0 -1 0;0 1 0 0 0 1 0 0 0 1 0;...
0 0 -1 0 0 0 -1 0 0 0 -1;0 0 1 0 0 0 1 0 0 0 1;];
B=[-10 50 -30 80 -70 140 -10 30];
LB=[0 0 0 0 0 0 0 0 0 0 0];

[X,fval,exitflag,output,lambada]=linprog(f,A,B,Aeq,Beq,LB)
Optimization terminated successfully.

X =

0.0000
50.0000
0.0000
0.0000
0.0000
50.0000
0.0000
10.0000
40.0000
0.0000
10.0000

fval =

2.4400e+004
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式