Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab:相空间图_Matlab_Discrete Space - Fatal编程技术网

Matlab:相空间图

Matlab:相空间图,matlab,discrete-space,Matlab,Discrete Space,我是混沌和非线性动力学的初学者。我试图用Matlab绘制相空间图。相空间图是其自变量的图。因此,如果一个系统有一个变量,那么它将是前一个值与下一个值的曲线图。情节的轮廓与帐篷地图相似,但我得到了几条交叉线。相空间图应该看起来像一个三角形,因此命名为帐篷,介于0和1之间。如果参数为mu,则最大值应为mu/2。应绘制正确的相空间图 我也尝试了其他离散贴图,得到了类似的线条。然而,在书中和所有的书中,我看到了一条没有直线的干净曲线。我哪里做错了?此外,绘图不会从X轴上的零开始。这个问题也是从编程和概念

我是混沌和非线性动力学的初学者。我试图用Matlab绘制相空间图。相空间图是其自变量的图。因此,如果一个系统有一个变量,那么它将是前一个值与下一个值的曲线图。情节的轮廓与帐篷地图相似,但我得到了几条交叉线。相空间图应该看起来像一个三角形,因此命名为帐篷,介于0和1之间。如果参数为mu,则最大值应为mu/2。应绘制正确的相空间图

我也尝试了其他离散贴图,得到了类似的线条。然而,在书中和所有的书中,我看到了一条没有直线的干净曲线。我哪里做错了?此外,绘图不会从X轴上的零开始。这个问题也是从编程和概念的角度提出的。我不知道如何得到维基百科给出的图中所示的x[n]vs x[n-1]的图形

下面是帐篷映射的Matlab代码,其中参数mu=2


我通过两个简单的更改执行了您的代码,一个是在开始时清除all,另一个是disp[j-1xj-1];内部为循环。下面是我输出的最后一部分

52.0000    0.7500
53.0000    0.5000
54     1
55     0
Attempted to access x(56); index out of bounds because numel(x)=55.
Error in phaseSpacePlot (line 10)
    disp([j-1 x(j-1)]);

现在很容易理解。因为在if-else条件规则if-doublexj-1=0&&doublexj-1中,代码中有几个问题。首先,您的条件太复杂,不需要将某个值转换为两倍,因为这是Matlab的默认数据类型。以下是计算循环的清理代码:

for j = 2 : N
    if x(j - 1) < 0.5        
        x(j) = 2 * x(j - 1);                        
    else  
        x(j) = 2 * (1 - x(j - 1));                    
    end
end
第二,默认情况下,一个简单的命令通过直线连接点;这不是你想要的。另外,接下来要计算的额外循环是不必要的。只需使用Matlab的功能:

plot(x(1 : end - 1), x(2 : end), '.')
axis equal
axis([0 1 0 1])
你得到了什么

这可能仍然不是您所期望的:完整的帐篷地图。这是因为您计算的不是地图本身,而是由地图控制的轨迹,它由您指定的256个点组成。在这256个步骤中,并非[0,1]中x的所有可能值都可能出现,因此您只得到地图上的几个点

如果不想在地图上获取点,而是想获取帐篷地图本身的图形,请执行以下操作:

x = 0 :0.01: 1;
plot(x, 2 * min(x, 1 - x))
axis equal
axis([0 1 0 1])

请注意,这不是中的相位图,它是系统状态随时间变化的曲线图,也不是描述相位空间结构的曲线图,它并不真正适用于地图。

给出了一个实现,但我很难理解,我没有得到相位空间曲线图,应该是,您需要使用double,x是用rand创建的,应该始终是双数组。帐篷函数与帐篷贴图不同。第一张图是帐篷函数,第二张图是帐篷图的相空间图,图中有Hwathanie给出的修正。@David:你能谈谈帐篷函数和地图之间的区别吗?方程式不同吗?谢谢你的回答。请你澄清以下细节好吗?1您已经提到,第二张图不是帐篷图的相空间图。但是教科书和维基百科说这是相空间图,或者叫做相图。轨迹是变量w.r.t时间的曲线图。2生成地图图的过程是什么,以便我可以对其他离散地图(如逻辑图等)执行此操作。3我得到额外线条的图形是什么,类似于Hwathenie提到的,称为?@SKM,不客气。1维基百科页面甚至没有提到单词阶段,你链接到的图片的标题上写着帐篷地图,仅此而已。我根据维基百科中的用法使用了“相位图”、“相位肖像”和“轨迹”,这与我在研究非线性动力学时学到的这些词的含义相同。快速签入可确认此用途。你用什么教材?2映射只不过是从给定区间到同一区间的函数。因此,映射的绘制方式与变量的任何其他函数相同。我通常使用答案中演示的plot,但您也可以查看ezplot。我强烈建议您在继续之前,花点时间阅读Matlab文档中的语言基础、数学、图形、编程脚本和函数部分。只有在你有了坚实的基础之后,学习才有用。3,我认为除了编程错误之外,没有什么特别的名字。我想不出哪种情况下,通过线连接一系列对xj-1,xj有任何意义。谢谢你的回复。我在生成时间序列时应用了你的代码。我已初始化x1=rand以生成初始值。在某些情况下,我得到了Hwathenie提到的错误-x54=0.75000000000000X55=0.500000000000000X56=1,其余的都是零值。如何预防/解决此问题?我使用的是坎茨的《非线性时间序列分析》一书。我相信相空间的定义
/纵向=变量图,对于x,y,z的洛伦兹图中的ex,将给出蝴蝶相位图。如果有错误,请纠正我。谢谢你指出错误;我也一样,不知道原因。
plot(x(1 : end - 1), x(2 : end), '.')
axis equal
axis([0 1 0 1])
x = 0 :0.01: 1;
plot(x, 2 * min(x, 1 - x))
axis equal
axis([0 1 0 1])