APP下载

高校Matlab教学中字符串的巧妙编程应用

2017-05-30何江芸

高教学刊 2017年20期
关键词:Matlab仿真字符串

何江芸

摘 要:文章利用matlab强大编程能力实现了对字符串的巧妙编程应用。主要利用其查找与替代功能中的字符串与数值间的巧妙变换,实验表明,字符串的编程可以进行有关统计计算,揭示字符串序列的统计性质,为后续数学建模提供前期帮助。

关键词:matlab教学;字符串;编程应用;matlab仿真

中图分类号:G421 文献标识码:A 文章编号:2096-000X(2017)20-0113-03

Abstract: This paper realizes the skillful programming application of string by employing matlab's excellent programming. The major function used in this process is the ingenious transformation between the string and the numerical value in its searching and substitution. The result shows that string programming can do statistical calculations, reveal statistical properties of string sequences, and provide help for the subsequent mathematical modeling.

Keywords: matlab teaching; string; programming application; matlab simulation

matlab是由美國MathWorks公司开发的一款商业软件,起初是为实现数学计算而设计的。20世纪70年代,美国新墨西哥大学计算机科学系主任Cleve Moler为了减轻学生编程负担,用FORTRAN编写了最早的matlab。1984年由Little、Moler、Steve Bangert合作成立了的MathWorks公司正式把matlab推向市场。到20世纪90年代,matlab已成为国际控制界的标准计算软件[1-5]。

matlab软件优势主要体现在编程环境、简单易用、强处理能力、图形处理、模块集合工具箱、程序接口和发布平台、应用软件开发等方面。目前已应用到数值分析、数值和符号计算、工程与科学绘图、控制系统的设计与仿真、数字图像处理技术、数字信号处理技术、通讯系统设计与仿真、财务与金融工程、管理与调度优化计算(运筹学)等领域。

新版的matlab自1984年推向市场以来,历经十多年的发展和竞争,现已成为国际认可的最优化的科技应用软件。与其他高级语言相比,matlab提供了一个人机交互的数学系统环境,可以大大节省编程时间。matlab语法规则简单、容易掌握、调试方便,具有高效、简单和直观的特性。使用者只需输入一条命令而不用编制大量的程序即可解决许多数字问题,正是由于matlab的强大功能,受到国内外专家学者的欢迎和重视,他已成为许多大学生的重要研究与学习工具[6-11]。

本文利用matlab强大编程能力实现了对字符串的巧妙编程应用。主要利用其查找与替代功能中的字符串与数值间的巧妙变换,实验表明,字符串的编程可以进行有关统计计算,揭示字符串序列的统计性质,为后续数学建模提供前期帮助。

一、matlab字符串的查找与替换运算

matlab字符串操作属于符号计算的内容,虽然是符号,但其蕴含了丰富的内容。字符串可以进行查找与替换,当杳找到某字符串时,可以进行比较与判定,同时字符串可以转化为数值,数值也可以转化为字符串。这就将符号计算与数值计算结合了起来,特别地,当某些序列是由符号表示时,为了探讨这些符号序列的意义,我们需要将其转化为可以理解的数值向量,以些数值向量来发现其所具有的统计及数学性质。

(一)strrep函数

strrep函数是一个字符串查找与替换函数,strrep函数的使用语法是:

modifiedstr = strrep(origstr,oldsubstr,newsubstr)

其中:

strrep——字符串替换函数;

origstr——原始字符串;

oldsubstr——原始字符串需要替换的字符串;

newsubstr——替换掉原始字符串中的新的字符串。

例如:

claim = 'This is a good example';

new_claim = strrep(claim, 'good', 'great')

new_claim =

This is a great example.

可见,strrep函数将claim字串中的“good”替换成了“ great”。

(二)str2num函数

str2num函数将字符串转化为数值串,str2num函数的使用语法是:

x = str2num(S)

其中:

S——字串或字串矩陣。

字符串矩阵S中的数字应该是ASCII字符。每个数字可以包含数字,小数点等。如果字符串S不表示有效的数字或矩阵,str2num()将返回空矩阵。

例如:S = ['1 2' ;'3 4']

str2num(S)将返回:

S =

1 2

3 4

即将一个二行二列的字符矩阵转化为了一个二行二列的数值矩阵。

二、字串巧妙编程的Malab仿真实验

GenBank是美国国家生物技术信息中心(National Center for Biotechnology Information,NCBI)建立的DNA序列数据库[12]。存有海量的动植物DNA数据,为人类进行大数据挖掘提供了丰富的宝藏,大量未知的动植物生命之谜等待人类去探索。从GenBank數据库中下载植物马利妮维雅叶绿体的DNA序列(NC_022431.1 Asclepias nivea chloroplast)。

这样就可以进行矩阵运算。利用matlab绘图功能,实现DNA图谱的分布。其matlab程序如下:

figure(1);

plot(1:80,mystring1(1,:),1:80,mystring1(1,:),‘d);

xlabel(‘序列长度),ylabel(‘基因分布);

figure(2);

plot(1:80,mystring1(2,:),1:80,mystring1(1,:),‘d);

xlabel(‘序列长度),ylabel(‘基因分布);

figure(3);

plot(1:80,mystring1(3,:),1:80,mystring1(1,:),‘d);xlabel(‘序列长度),ylabel(‘基因分布);

figure(4);

plot(1:80,mystring1(4,:),1:80,mystring1(1,:),‘d);

xlabel(‘序列长度),ylabel(‘基因分布):

这样,就可以得到四条序列的基因分布图,如下:

可见,这就将只是字符串的DNA序列变为了用数值描述的DNA图谱。利用该图谱,我们可以进行后续的数学建模计算,为研究基于统计分布的数学建模提供非常重要的前期基础。

上述matlab编程的巧妙在于:用strrep函数实现了字符的比对计算,若字母为A(腺嘌呤)则用数字字符“1”表示:strrep(mystring1(i,:),'A',' 1');若字母为T(胸腺嘧啶)则用数字字符“2”表示:strrep(mystring1(i,:),'T',' 2');若字母为G(鸟嘌呤)则用数字字符“3”表示:strrep(mystring1(i,:),'G',' 3');

若字母为C(胞嘧啶)则用数字字符“4”表示:strrep(mystring1(i,:),'C',' 4'),每个数值用一个空格隔开,这样防止数据紧合在一起。然后,再用str2num函数将这些“1”“2”“3”“4”字符转化为真正的数值1、2、3、4,从而可以进行matlab汇图仿真,得到四段基因序列的图谱分布。

三、结束语

Matlab具有强大的计算功能,在高校教学中,字符串计算是其中一个重要方面,matlab的符号处理功能非常之多,本文利用其字符串的巧妙编程功能,主要利用其查找与替代功能中的字符串与数值间的函数变换对基因序列实现了数值仿真统计计算,仿真结果揭示了字符串序列的统计性质,描绘了DNA序列的图谱分布,为后续数学建模提供了前期的理论探讨,同时为符号计算提供了一种新的研究思路。

参考文献:

[1]聂建辉.Matlab与科学计算课程教学方法改革[J].学周刊,2017(19):5-6.

[2]王浩然,徐春芳,杨玲,等.基于Matlab软件GUI的机械波模拟[J].物理与工程,2017(02):83-86.

[3]罗宏伟,张建刚,杜文举,等.基于MATLAB软件的周期符号纠缠函数构造的新混沌系统动力学分析[J].数字技术与应用,2017(03):54-57.

[4]陈汉威.MATLAB数学实验在经济模型教学中的应用[J].吉林工程技术师范学院学报,2017(01):91-93.

[5]杜泉.MATLAB在数字信号处理教学中的应用[J].电子测试,2016(24):121+120.

[6]张林,王艳芬,张晓光,等.基于MatlabGUI的数字信号处理演示平台设计[J].实验技术与管理,2016(12):154-157.

[7]闻绍飞,刘纪红,孙宇舸.MATLAB在数字信号处理实验教学中的研究[J].实验室科学,2016(05):74-75+79.

[8]胡明华,李青勇,袁钰.基于Matlab的信号处理系统与分析[J]. 电子测试,2016(20):48+47.

[9]余丰.基于Matlab的信号处理系统与分析[J].电子技术与软件工程,2016(12):96.

[10]楊继臣,刘磊安.基于MATLAB编程的数字信号处理教学改革[J].福建电脑,2016(04):83-84.

[11]张雪峰.MATLAB仿真软件在线性代数课程中的应用研究[J].曲阜师范大学学报(自然科学版),2016(01):42-46+50.

[12]美国国家生物技术信息中心GenBank数据库.https://www.ncbi.nlm.nih.gov/.

猜你喜欢

Matlab仿真字符串
基于文本挖掘的语词典研究
微信网络的信息传播模型研究
常规PID控制和常规模糊控制的比较
感应电机低速运行时自适应状态观测器研究
MATLAB仿真在《控制工程基础》教学中的应用
最简单的排序算法(续)
一种新的基于对称性的字符串相似性处理算法
高效的top-k相似字符串查询算法
依据字符串匹配的中文分词模型研究
一种针对Java中字符串的内存管理方案