APP下载

Matlab编程避免使用循环语句的方法

2017-04-13周德亮邢泽宁

软件导刊 2017年3期

李 冰,周德亮,邢泽宁

(辽宁师范大学 数学学院,辽宁 大连 116000)

Matlab编程避免使用循环语句的方法

李 冰,周德亮,邢泽宁

(辽宁师范大学 数学学院,辽宁 大连 116000)

充分利用Matlab丰富的矩阵运算功能,解决距离矩阵的生成、一次性生成N项和函数在多个节点的函数值、一次性绘制多个节点及多个几何图形的问题。同时进行不同编程方式在生成有限覆盖子域图形时所用时间的对比实验,结果表明,这种矩阵化编程方法语言简洁,且程序运行速度更快。

Matlab;矩阵化编程;矩阵生成;和函数计算;多图形绘制

0 引言

一般编程语言在处理大量数据生成的数组或者矩阵问题时,多数采用循环语句实现[1]。Matlab语言不仅可以使用循环编程,同时可以利用其特殊的函数运算[2-3],将矩阵作为变量的基本单位,充分利用矩阵化运算代替循环编程[4]。本文利用Matlab矩阵运算,结合研究中遇到的几个问题,通过对距离矩阵的生成[5]、N项和函数的计算及有限覆盖子域的绘制几个实例,介绍了几种解决这些实例的矩阵化编程方法。

1 距离矩阵生成

考虑如下形式矩阵的生成方法,在径向基插值和配点法中经常用到距离矩阵,即:

传统方法一般使用双循环语句,而使用Matlab编写程序可以避免循环。为了生成该矩阵,需要先构造如下形式的矩阵:

由于Ndgrid函数的功能是生成函数和插值所需的X和Y分量的网格数据,可利用Ndgrid函数生成矩阵Xc、Xr、Yc、Yr,如下:

x=0:0.1:1;y=0:0.1:1; [X,Y]=meshgrid(x,y);P=[X(:),Y(:)];

[Xc,Xr]=ndgrid(P(:,1));[Yc,Yr]=ndgrid(P(:,2));

A=sqrt((Xc-Xr).^2+(Yc-Yr).^2);

在区域[0,1]*[0,1]内布置节点x、y,其中X代表xi构成的向量,Y代表yi构成的向量,P代表将矩阵X和Y的元素按列排序。……

登录APP查看全文