MATLAB实战 | 科赫曲线的绘制

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: MATLAB实战 | 科赫曲线的绘制

10960139501652302893.jpg


科赫曲线的绘制

# 01应用实战

自然界存在许多复杂事物和现象,如蜿蜒曲折的海岸线、天空中奇形怪状的云朵、错综生长的灌木、太空中星罗棋布的星球等,还有许多社会现象,如人口的分布、物价的波动等,它们呈现异常复杂而毫无规则的形态,但它们具有自相似性。人们把这些部分与整体以某种方式相似的形体称为分形(fractal),在此基础上,形成了研究分形性质及其应用的科学,称为分形理论。科赫曲线是典型的分形曲线,由瑞典数学家科赫(Koch)于1904年提出。下面以科赫曲线为例,说明分形曲线的绘制方法。
1. 科赫曲线的构造原理
科赫曲线的构造过程是,取一条直线段L0,将其三等分,保留两端的线段,将中间的一段用以该线段为边的等边三角形的另外两边代替,得到曲线L1,如图1所示。再对L1中的4条线段都按上述方式修改,得到曲线L2,如此继续下去进行n次修改得到曲线Ln,当n→∞时得到一条连续曲线L,这条曲线L就称为科赫曲线。

6434510492028174646.jpg


■ 图1科赫曲线构造过程


科赫曲线的构造规则是将每条直线用一条折线替代,通常称之为该分形的生成元,分形的基本特征完全由生成元决定。给定不同的生成元,就可以生成各种不同的分形曲线。分形曲线的构造过程是通过反复用一个生成元来取代每一直线段,因而图形的每一部分都和它本身的形状相同,这就是自相似性,这是分形最为重要的特点。分形曲线的构造过程也决定了制作该曲线可以用递归方法,即函数自己调用自己的过程。对于给定的初始直线L0,设有A(ax,ay)、B(bx,by),按照科赫曲线的构成原理计算出C、D、E各点坐标如下。

9446600878695353101.jpg


#2. 科赫曲线的程序实现
定义对直线L0进行替换的函数koch(),然后利用函数的递归调用,分别对AC、CD、DE、EB线段调用koch()函数,通过递归来实现“无穷”替换,因为不能像数学家的设想那样运算至无穷,所以根据要显示的最小长度作为递归的终止条件。首先编写M函数koch()如下:

3733773042491662009.jpg


M函数编写完成后,在命令行窗口输入以下命令:

10573736855512084879.jpg


命令运行结果如图2所示,改变depth的值可以获得不同细腻程度的科赫曲线。

8825596332994460387.jpg


■ 图2科赫曲线


在程序中3次调用koch()函数,实现三角形3条边各自的科赫曲线,形成科赫雪花曲线效果。在命令行窗口输入以下命令,程序运行结果如图3所示。

10494330086815799022.jpg


15403702150894904094.jpg


■ 图3 科赫雪花曲线

目录
相关文章
|
8月前
|
存储 Serverless
MATLAB实战 | 梯形积分法
在科学实验和工程应用中,函数关系往往是不知道的,只有实验测定的一组样本点和样本值,这时就无法使用integral函数计算其定积分。
300 1
|
9月前
MATLAB实战 | 求水仙花数
循环结构的基本思想是重复,即利用计算机运算速度快以及能进行逻辑控制的特点,重复执行某些语句,以满足大量的计算要求。虽然每次循环执行的语句相同,但语句中一些变量的值是变化的,而且当循环到一定次数或满足条件后能结束循环。循环是计算机解题的一个重要特征,也是程序设计的一种重要技巧。MATLAB提供了两种实现循环结构的语句: for语句和while语句。
320 0
|
9月前
|
1月前
|
机器学习/深度学习 编解码 监控
探索MATLAB在计算机视觉与深度学习领域的实战应用
探索MATLAB在计算机视觉与深度学习领域的实战应用
43 7
|
1月前
|
数据安全/隐私保护
耐震时程曲线,matlab代码,自定义反应谱与地震波,优化源代码,地震波耐震时程曲线
地震波格式转换、时程转换、峰值调整、规范反应谱、计算反应谱、计算持时、生成人工波、时频域转换、数据滤波、基线校正、Arias截波、傅里叶变换、耐震时程曲线、脉冲波合成与提取、三联反应谱、地震动参数、延性反应谱、地震波缩尺、功率谱密度
|
1月前
|
机器学习/深度学习 存储 前端开发
Matlab建立SVM,KNN和朴素贝叶斯模型分类绘制ROC曲线
Matlab建立SVM,KNN和朴素贝叶斯模型分类绘制ROC曲线
|
1月前
|
数据安全/隐私保护
地震波功率谱密度函数、功率谱密度曲线,反应谱转功率谱,matlab代码
地震波格式转换、时程转换、峰值调整、规范反应谱、计算反应谱、计算持时、生成人工波、时频域转换、数据滤波、基线校正、Arias截波、傅里叶变换、耐震时程曲线、脉冲波合成与提取、三联反应谱、地震动参数、延性反应谱、地震波缩尺、功率谱密度
|
1月前
|
数据安全/隐私保护
matlab 曲线光滑,去毛刺,去离群值,数据滤波,高通滤波,低通滤波,带通滤波,带阻滤波
地震波格式转换、时程转换、峰值调整、规范反应谱、计算反应谱、计算持时、生成人工波、时频域转换、数据滤波、基线校正、Arias截波、傅里叶变换、耐震时程曲线、脉冲波合成与提取、三联反应谱、地震动参数、延性反应谱、地震波缩尺、功率谱密度
|
1月前
|
机器学习/深度学习 算法 数据挖掘
基于改进ISODATA算法的负荷场景曲线聚类(matlab代码)
基于改进ISODATA算法的负荷场景曲线聚类(matlab代码)
|
6月前
MATLAB实战 | APP设计
生成一个用于观察视点仰角和坐标轴着色方式对三维图形显示效果影响的App,界面如图1所示。界面右上部的列表框用于选择绘图数据、切换按钮组用于选择绘图方法,中间的旋钮用于设置视点方位角和仰角,右下部的分档旋钮用于设置坐标轴着色方式、跷板开关用于显示网格线。
318 7
MATLAB实战 | APP设计