APP下载

Matlab语言特点与应用分析

2017-03-30张凤莉张培训

商丘职业技术学院学报 2017年1期
关键词:商丘信号处理编程

张凤莉,张培训

(商丘职业技术学院 机电系,河南 商丘 476000)

Matlab语言特点与应用分析

张凤莉,张培训

(商丘职业技术学院 机电系,河南 商丘 476000)

对Matlab语言的特点进行了简要的介绍和分析,对其应用从线性代数、数字信号处理、通信系统仿真、图像处理等方面给予举例分析,Matlab已被广泛地用于研究和解决各种具体的工程问题,可以预见,Matlab将在我国科学研究和工程应用中发挥越来越大的作用.

Matlab语言;特点;应用

1 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 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信号波形和频谱图

3 结语

综上所述,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

猜你喜欢

商丘信号处理编程
商丘师范学院美术作品选登
商丘师范学院美术作品选登
编程,是一种态度
元征X-431实测:奔驰发动机编程
商丘之旅
让更多企业在商丘长得大、飞得高
编程小能手
纺织机上诞生的编程
《信号处理》征稿简则
《信号处理》第九届编委会