张凤莉,张培训
(商丘职业技术学院 机电系,河南 商丘 476000)
Matlab语言特点与应用分析
张凤莉,张培训
(商丘职业技术学院 机电系,河南 商丘 476000)
对Matlab语言的特点进行了简要的介绍和分析,对其应用从线性代数、数字信号处理、通信系统仿真、图像处理等方面给予举例分析,Matlab已被广泛地用于研究和解决各种具体的工程问题,可以预见,Matlab将在我国科学研究和工程应用中发挥越来越大的作用.
Matlab语言;特点;应用
1.1 Matlab语言的数据处理能力强
Matlab包含大量的计算算法,研究发现,Matlab中,有600多个数学运算函数,且这些数学运算函数都是工程中用到的,它可以实现用户需要的不同计算功能[1]9-10.此外,在具有相同计算要求的前提下,利用Matlab进行编程,能够大大减少工作量.Matlab中的函数集,不仅包括一系列最基本、最简单的数学运算函数,也包括非常多的复杂数学运算函数,例如快速傅立叶变换、特征向量、矩阵等等[2]155,233.
1.2 Matlab的图形处理功能非常强
Matlab图形化显示数组或者矩阵的能力非常强.此外,Matlab也可以给数组或矩阵的图形增加注释,还可以标注和打印数组或矩阵的图形.其图形技术主要包括以下几个方面:二维、三维可视化技术,图像处理技术,高层次专业图形技术.如动画等高级绘图函数,包括对图形的四维数据表现、色度处理、光照处理等.Matlab还具有低级绘图命令,主要用于让用户控制图形特点,通过利用句柄图形技术,Matlab可以建立图形用户界面,让用户灵活、自由地控制图形特点[3]2267-2269.
1.3 Matlab的可扩充性强 应用程序接口便利
Matlab的库函数非常丰富.因此,在开展复杂数学运算时,可以直接调用库函数中的数学运算函数.与此同时,用户还可以按照实际需要,对函数库进行编写和扩充.通过编程可达到用户之间的资源共享.
2.1 Matlab的应用范围
Matlab有着非常广泛的应用范围,可以在众多领域中得到良好的应用.附加的工具箱使得Matlab环境得到了有效的扩展,从而使这些领域中的特定类型问题也得到了有效解决.因此在现阶段,Matlab能够用于下述工作中:数值分析,数值与符号计算,数字图像处理,数字信号处理,财务工程与金融工程,控制系统、通讯系统的设计,仿真及工程科学绘图等.
2.2 Matlab语言在数值分析中的应用
对于Matlab而言,其程序书写形式相对比较自由,原因主要在于其函数名称、函数表达式与现阶段计算公式书写的表达方式十分接近,在对Matlab的程序进行编写时,就如同在草稿上进行数学计算公式的排列、求解一样简单,基于此表达方式,可以对工程技术人员所提出的算法进行快速验证[4]7-8,从而使得编程工作在很大程度上得到了简化,大大提高了编程的效率.当Matlab进行运行时,能够直接将Matlab语句输入命令行,系统会立即对Matlab语句进行处理,并逐步完成从翻译到链接,再从链接到运行的全过程,在这个过程中,因为对库函数进行了有效利用,从而避开了一些复杂的、烦琐的子程序编程任务,对一些没有必要进行的编程工作进行了有效压缩,从而使得编程工作在很大程度上得到了简化.
举一个例子,应用Matlab语言对下述方程进行求解.
>> B=[1;3;2];
>> x=A/B,y=x’
为方便结果显示,求得x的转置y,执行结果:y=x’=[0 1 0].
2.3 Matlab语言在数字信号处理中的应用举例
已知模拟信号x(t)=2sin(3πt)-sin(6πt),求其幅度谱和相位谱.程序如下:
fs=100;
N=128;
n=0:N-1;
xn=2*sin(3*pi*n/fs)-sin(6*pi*n/fs);
xk=fft(xn,N);
f=(0:N-1)*fs/N;
xkam=abs(xk);
xkan=angle(xk);
subplot(2,1,1)
plot(f,xkam)
xlabel('频率(Hz)'),ylabel('幅值')
title('幅频响应')
axis([0 50 0 150])
subplot(2,1,2)
plot(f,xkan)
xlabel('频率(Hz)'),ylabel('弧度')
title('相频响应')
axis([0 50 -2 2])
执行结果如图1所示.
图1 幅度谱和相位谱
2.4 使用Matlab语言对通讯系统的设计
使用一个随机生成的二元序列(假设“0、1”等概分布),画出2PSK信号波形和频谱图.
A=1;
Fc=2;
Fs=128;
Ts=1/Fs;
M=20;
Td=1;
T=M*Td;
t=0:Ts:T-Ts;
N=length(t);
d=sign(randn(1,M));
dd=sigexpand((d+1)/2,Fs);
gt=ones(1,Fs);
figure(1)
subplot(221);
t_snrz=conv(dd,gt);
delta_f=1/T;
N=length(t);
f=delta_f*[-N/2:N/2-1];
f_snrz=fft(t_snrz(1:length(t)));
f_snrz=T/N*fftshift(f_snrz);
psf=(abs(f_snrz).^2+eps)/T;
plot(t,t_snrz(1:length(t)));grid on
axis([0 5 0 1.2]);
xlabel('t');ylabel('amp');title('基带信号');
subplot(222);
plot(f,10*log10(abs(f_snrz).^2/T+eps));grid on
plot(f,abs(f_snrz).^2/T+eps);grid on
axis([-2 2 0 10]);
xlabel('f');ylabel('psf');title('基带信号功率谱');
ht=A*cos(2*pi*Fc*t);
t_2psk=(2*t_snrz(1:N)-1).*ht;
f_2psk=fft(t_2psk(1:N));
f_2psk=T/N*fftshift(f_2psk);
psf=(abs(f_2psk).^2+eps)/T;
subplot(223)
plot(t,t_2psk);grid on;
axis([0 5 -1.2 1.2]);
xlabel('t');ylabel('amp');title('2PSK信号');
subplot(224)
plot(f,abs(f_2psk).^2/T+eps);grid on;
axis([-Fc-4 Fc+4 0 2]);
xlabel('f');ylabel('psf');title('2PSK信号功率谱');
执行结果如图2所示.
图2 2PSK信号波形和频谱图
综上所述,Matlab语言是一种以矩阵或者是数组为基础的高级语言,具有面向对象编程、数据结构、函数、程序流控制以及输入/输出等一系列特色.Matlab凭借着应用灵活、程序延伸性好、结构性强以及用法十分简单等一系列优势,已逐渐成为视图交互系统、科技计算以及程序中语言工具的首选.Matlab在动态系统仿真、自动控制、数理统计、线性代数以及数字信号处理等方面,有着非常突出的作用,已经成为现阶段科研工作人员进行科学研究、工程技术人员开展生产实践的有效手段.
[1] 陆 强,颜加仁,林定能,等.基于ARDUINO与MATLAB的简易示波器研制[J].科技资讯,2014(29).
[2] 闫常丽,孙志田,赵书银.关于利用MATLAB软件进行数值分析课程教学的探讨[J].科教导刊(上旬刊),2014(11).
[3] 张 萌,王菊霞,李芳菊,等.基于JAVA和MATLAB的光学虚拟实验室的建立[J].河南科学,2014(11).
[4] 刘 芳.基于MATLAB的“数字信号处理”课程教学改革与方法研究[J].科技展望,2014(12).
[责任编辑 冰 竹]
2016-09-27
张凤莉(1985- ),女,河南商丘人,商丘职业技术学院讲师,硕士,主要从事电子与通信工程研究; 张培训(1971- ),男,河南商丘人,商丘职业技术学院副教授,主要从事机械及制冷与低温技术研究。
TP391.7
A
1671-8127(2017)01-0097-03