模糊控制:MATLAB实现

基于模糊理论的广西城市的分类

利用MATLAB的模糊聚类分析实现城市分类的智能计算

文章简介:利用MATLAB的模糊聚类分析实现城市分类的智能计算,使用到了模糊控制算法,有兴趣的友友可以看看。都是一些比较基础的代码。

一、研究背景

城市分类,根据城市职能、城市规模、城市形态等方面的差异对城市进行的类分。城市之间的差异反映在人口规模与结构、产业结构、城市形态,生活方式和生活水平、地理位置及历史沿革等诸多方面。城市的分类,因不同的目的和要求,选用上述一个或几个指标进行而有所区别,体现城市性质的职能分类,根据人口数量而作的规模分类、反映城市外貌的形态分类,以及按照地理、交通位置或历史起源把城市分成不同类型。其中城市职能分类和规模分类最能揭示城市的基本特征,因而受到广泛的重视。

二、研究目的

通过掌握数据文件的标准化、模糊相似矩阵的建立方法、学会传递闭包矩阵的求解方法;使用MATLAB软件进行模糊矩阵的编程运算和仿真,实现模糊聚类分析对广西的城区面积和城区人口数据进行城市分类,将广西21座城市进行划分,有助于完善城市城区面积和城区人口的分类系统;这有助于挖掘城市发展的规律与特点,深化城市发展的理论研究;同时有助于决策者在面临城市发展规划作出最优决策,从而能更好的对广西城市发展做更好的规划。因此,在广西城市发展战略的大背景下有很强的理论和现实意义。

三、研究内容

1、根据下面表格中的数据,用Matlab编程进行数据标准化处理;

2、根据标准化处理后的数据,用Matlab编程,建立模糊相似矩阵,并编程求出其传递闭包矩阵;

3、建立模糊等价矩阵,根据原始数据,对广西城市进行分类并分析

四、方法步骤

  1. 将表《2017年全国城市人口和建设用地》中广西壮族自治区21所城市的城区人口和城区面积数据导入MATLAB软件;

程序见附录1:

  1. 读取数据的高和宽,建立原始矩阵A,对原始矩阵A应用极差正规化方法进行数据规格化,得到数据矩阵。

程序见附录2:

  1. 对数据矩阵应用最小最大法得到模糊相似矩阵。

程序见附录3:

  1. 应用传递闭包方法将模糊相似矩阵转化为模糊等价矩阵。

程序见附录4:

  1. 建立λ-截矩阵,按照λ有大到小进行聚类分析。

程序见附录5:

五、结果和分析

  1. 运行代码

为了便于看到所有的结果,先将显示截距阵的一行代码注释掉,运行得到所有分类结果如下图

  1. 选取合适的λ值

当我们选取λ=0.6521时函数得到的截距阵及进行的分类结果图如下

   

分类结果为:

第1类:x19

第2类:x21

第3类:x6

第4类:x5 x8 x11 x13 x15 x16 x17 x18 x20

第5类:x2 x3 x4 x7 x9 x10 x12 x14

第6类:x1

  1. 城市分类

根据以上数据,我们根据城市的城区面积和城区人口数据将广西城市分成6大类,取λ=0.6521。此时,广西的城市分类为:

第一类城市:南宁

第二类城市:北海

第三类城市: 柳州  桂林 梧州 防城港 钦州  贵港  玉林 百色

第四类城市:岑溪 桂平 北流 靖西 贺州 河池 来宾 崇左

第五类城市:凭祥

第六类城市:合山

  1. 数据分析

我们根据原始数据将关系城市划分为人口密集的大型城市、非人口密集的大型城市、人口适中的中型城市、人口适中的小型城市、人口较少的小型城市、人口较少的超小型城市。

由上述可知广西城市大部分为第三类人口适中的中型城市和第四类人口适中的小型城。

第一类城市南宁城区面积大且城区人口多,为人口密集的大型城市,在广西城市发展中处于领先地位。

第二类城市北海城区面积最大但城区人口相对于南宁而言较少,属于非人口密集的大型城市,说明北海正在快速发展中,有望发展成人口密集的大型城市。

第三类城市中桂林的城区面积最大,柳州的城区人口最多,平均城区面积为394.78平方公里,平均城区人口53.9万人;柳州、桂林、梧州、防城港、钦州、贵港、玉林、百色均属于人口适中的中型城市,一共8个城市,是当前广西城市发展的主力。

第四类城市中北流的城区面积最大,河池的城区人口最多,平均城区面积为83.23平方公里;平均城区人口20.57万人;岑溪、桂平、北流、靖西、贺州、河池、来宾、崇左均属于人口适中的小型城市,一共9个城市是广西城市发展的后备军。

第五类城市凭祥和第六类城市均因为城区面积小或城区人口少,分别属于人口较少的小型城市和人口较少的超小型城市。

代码附录1:

A=xlsread('D:\Users\74744\Desktop\GX1.xlsx');

代码附录2:

[hei,wid]=size(A);

n=zeros(hei,wid);

for i=1:hei

    for j=1:wid

        n(i,j)=(A(i,j)-min(A(:,j)))/(max(A(:,j))-min(A(:,j)));

    end

end 

   

附录3:

[hei,wid]=size(n);

m=zeros(hei,hei);

for i=1:hei

    for j=1:hei

        maxnum=0;

        minnum=0;

        for k=1:wid

            maxnum=maxnum+max(n(i,k),n(j,k));

            minnum=minnum+min(n(i,k),n(j,k));

        end

        m(i,j)=minnum/maxnum;

    end

end 

附录4:

[hei,wid]=size(m);

ab=zeros(hei,wid);

flag=0;

while(flag==0)

    m1=size(m,1);

    n1=size(m,2);

    for i=1:m1

        for j=1:n1

            ab(i,j)=max(min([m(i,:);m(:,j)']));

        end

    end

    if(ab==m)

        flag=1;

    else

       m=ab;

    end

end

附录5:

L=unique(m)';

    a1=size(m);

    D=zeros(a1);

     for m2=length(L):-1:1

        k=L(m2);

        for i=1:a1

            for j=1:a1

                if m(i,j)>=k

                    D(i,j)=1;

                else

                    D(i,j)=0;

                end

            end

        end

 B=unique(D,'rows');

    [hei]=size(B);

 for j=1:hei

     eval(['L',num2str(j) '= [];'])

 end

 for i=a1:-1:1

     for j=1:hei

         if D(i,:)==B(j,:)

             p=eval(['L',num2str(j);]);

             p=[['x',num2str(i),' '] p];

             eval([ 'L',num2str(j) '=p;']);

         end

     end

 end

fprintf("当分类系数k=%5.4f时,",L(m2));

 fprintf("所得截矩阵为:\n\n");

 %disp(D);

 fprintf("分类结果为:\n");

 for j=1:hei

     

     fprintf("第%d类:",j);

     %['L',num2str(j);]

     disp(eval(['L',num2str(j);]));

 end

 fprintf("\n");

 end

  • 29
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: Matlab模糊控制是一种基于模糊逻辑进行控制的方法。其原理基于模糊控制理论,该理论模糊化了传统的控制理论,使得控制系统可以更好地应对问题。Matlab模糊控制通过将输入和输出变量转换为模糊变量,使得控制器得以产生具有模糊性质的控制规则,从而使系统更加健壮和适应性强。Matlab模糊控制的工作流程分为规则生成和逻辑推理两个步骤。在规则生成中,控制规则被预设和调整以响应特定的输入或输出条件。在逻辑推理中,输入和输出变量之间的关系被模糊处理,从而使得不能确定的问题可以通过模糊推理得出一种相对可行的解决方案。Matlab模糊控制广泛应用于各个领域,如汽车工业、航空航天、机械制造等。在这些领域中,由于其简便性和便捷性,Matlab模糊控制得到了良好的应用并且已经成为了一个成熟的解决方案。 ### 回答2: 模糊控制是将模糊逻辑应用于控制领域的一种控制方法。MATLAB是一种强大的工具,可用于设计和模拟各种控制系统。在MATLAB中,可以使用Fuzzy Logic Toolbox来设计和模拟模糊控制系统。 模糊控制系统的设计包括两个主要部分:模糊推理和模糊控制。模糊推理使用模糊规则来将输入和输出之间的关系建模。模糊控制将这些规则转换成模糊控制器,以实现系统的控制。 在MATLAB中,可以使用“fuzzy”命令来创建模糊控制系统。该命令需要指定输入和输出变量的名称,以及模糊规则库。规则库包含一组规则,每个规则反映了系统中输入和输出之间的模糊规则。可以使用“addRule”命令向规则库中添加规则。 模糊控制器可以采用多种方法实现。其中一种方法是使用模糊控制器的输出来计算系统的控制信号。这可以通过使用“evalfis”命令完成,该命令需要指定模糊控制器和输入变量的值。该命令将返回控制信号的模糊值,然后可以使用“defuzz”命令将其转换为实际控制信号。 在MATLAB中,可以使用模糊控制器来控制各种系统,例如温度控制、水位控制和机器人控制等。使用MATLAB模糊控制工具箱可以简化设计和模拟模糊控制器的过程,并提高控制系统的性能和稳定性。 总之,MATLAB是一款非常强大的工具,可以用于设计和模拟各种控制系统,包括模糊控制系统。使用MATLAB的Fuzzy Logic Toolbox,设计和实现模糊控制系统变得更加容易。这些系统可以用于控制各种物理和工程应用,从而提高系统性能和效率。 ### 回答3: 模糊控制是一种基于模糊逻辑学的控制方法,在许多工业和科学应用中被广泛使用。它能够通过模糊规则来处理具有模糊性的输入,并输出非模糊的控制信号,从而使系统达到稳态或转移期间的最优状态。MATLAB作为一种高效的数值计算工具,可以很好地支持模糊控制算法的实现,且能够进行可视化分析和优化。在MATLAB中,模糊控制主要借助fuzzy logic toolbox来完成。 fuzzy logic toolbox是一个MATLAB工具箱,可用于描述和控制模糊系统,其实现原理基于模糊控制算法。它包含了两个主要的部分:模糊逻辑系统和模糊控制。 - 模糊逻辑系统:模糊逻辑系统由模糊变量、模糊集合、模糊关系(如模糊if-then规则)、模糊运算(如模糊交和模糊并)等组成。在MATLAB中,这些元素都可以用相应的函数进行定义和操作,如fisvar、fisdef、fisrule、fisand等。 - 模糊控制模糊控制是指在一定的控制对象和控制目标之间,基于模糊逻辑推理的控制算法。它的核心思想是将模糊输入映射到模糊输出,并将其转化为控制信号。在MATLAB中,可以通过fuzzy logic toolbox提供的fis进行模糊控制的设计和仿真,其中包括模糊模型的建立、模糊规则的编写、输入输出变量的可视化分析等。 总而言之,MATLAB模块控制在模糊理论和控制中具有重要的应用价值。它不仅可以为工业和商业应用提供实时、准确、高效的控制方法,还可以帮助研究人员更好地理解和掌握模糊控制算法的本质,并深入挖掘其潜在的应用领域。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值