DSP

MATLAB入门

2019-07-13 14:54发布

MATLAB 概述

20世纪70年代后期,时任美国新墨西哥大学计算机科学系主任的Cleve Moler教授为学生设计了一组调用LINPACK和EISPACK库程序的“通俗易用”的接口,此即是用FORTRAN编写的处于萌芽状态的MATLAB

MATLAB 的工作环境

    MATLAB各种操作命令都是从命令行窗口开始的,用户可以在命令窗口中输入MATLAB命令,实现相应的功能。

命令行窗口

x = linespace(0,3*pi,20); y = cos(x) + sin(x); e = std(y) * ones(size(x)) %标准差 errorbar(x,y,e); e = Columns 1 through 14 1.0058 1.0058 1.0058 1.0058 1.0058 1.0058 1.0058 1.0058 1.0058 1.0058 1.0058 1.0058 1.0058 1.0058 Columns 15 through 20 1.0058 1.0058 1.0058 1.0058 1.0058 1.0058 运行结果如图1-1所示
图1-1 误差的区域范围 在MATLAB中,命令行窗口常用的命令和功能表如表1-1所示 命令 功能 clc 删去一页命令窗口,光标回屏幕左上角 clear 从工作空间清除所有变量 clf 清除图形窗口内容 help 查询指定文件的路径

帮助系统窗口

图形窗口

M文件窗口

MATLAB程序控制结构

顺序结构

    顺序结构是指所有组成程序源代码的语句按照由上至下的次序依次执行,知道程序的最后一个语句。这种程序有点事容易编制;缺点是结构单一,能够实现的功能有限。

数据输入

    从键盘输出数据,则可以使用函数input来进行,该函数的调用格式为 A = input(提示语句,选项);     其中,提示信息为一个字符串,用于提示用户输入什么样的数据。
    如果在input函数调用时‘s’ 选项,则允许用户输入一个字符串。例如,想输入一个人的名字,可以采用以下命令: xm = input('What is your name','s');

数据输出

     MATLAB提供的命令窗口输出函数主要有disp,其调用格式为disp(输出项);
     其中,输出项可以为字符串,也可以为矩阵。 A = 'Hello, MATLAB'; disp(A);      运行结果如下 Hello, MATLAB

选择结构

     在MATLAB中,选择结构依照不同的条件进行判断,然后根据判断的结果进行某种方法来解决某个问题。

if 语句

单分支if语句

if 条件 语句组1 end

双分支if语句

if 条件 语句组1 else 语句组2 end

多分枝if语句

if <逻辑判断语句1> 语句组1 elseif <逻辑判断语句2> 语句组2 elseif <逻辑判断语句3> 语句组3 … else 语句组N end

switch-case语句

switch 表达式 case 语句1 语句组1 case 语句2 语句组2 … case 语句m 语句组m otherwise 语句组n end

循环结构

for语句

for 循环变量 = 表达式1:表达式2:表达式3 循环体语句 end     其中,表达式1的值为循环变量的初值,表达式2的值为步长,表达式3的值为循环变量的终值。步长为1时,表达式2可以省略。

while循环结构

while(表达式) MATLAB语句 end

变量、数值与表达式

变量

    ”变量”来源于数学,是计算机语言中能存储计算结果和能表示值抽象概念。 特殊变量 说明 ans 默认变量名 pi 圆周率 inf 无穷大 eps 浮点运算相对精度 nan 非数,即结果不确定 关键字 >> iskeyword ans = 'break' 'case' 'catch' 'classdef' 'continue' 'else' 'elseif' 'end' 'for' 'function' 'global' 'if' 'otherwise' 'parfor' 'persistent' 'return' 'spmd' 'switch' 'try' 'while'

数值

表达式

数组与矩阵

数组的创建与操作

常见的数组运算

矩阵的表示

矩阵的运算

数值分析

图形绘制

二维图形的绘制

绘制二维曲线图

%绘制sin(x),sin(2x),sin(3x) clear all; %准备数据 x = 0 : 0.01 : 3*pi; y1 = sin(x); y2 = sin(2*x); y3 = sin(3*x); %设置当前绘图区 figure; %绘图 plot(x,y1,x,y2,x,y3); %设置坐标轴和网络线属性 axis([0 8 -2 2]); grid on; %标注图形 xlabel('x'); ylabel('y'); title('演示绘图基本步骤'); legend('sin(x)','sin(2x)','sin(3x)') 运行结果如图1-2所示 x = (0:pi/100:2*pi)'; y1 = 2*exp(-0.5*x)*[1,-1]; y2 = 2*exp(-0.5*x).*sin(2*pi*x); x1 = (0:12)/2; y3 = 2*exp(-0.5*x1).*sin(2*pi*x1); plot(x,y1,'g--',x,y2,'b-',x1,y3,'rp'); 这里写图片描述

绘制对数曲线图

x = logspace(-1,2); %logspace(a,b),创建行向量x,第一个元素为10^a,最后一个元素为10^b,形成总数为50个元素的等比数列 loglog(x,exp(x),'-s'); grid on; 运行结果如图1-3所示
这里写图片描述

绘制其他二维曲线图

figure subplot(221) %条形图 x = -2.9:0.2:2.9; bar(x,exp(-x.^2)) subplot(222) %针状图 x = 0:0.1:4 y = (x.^0.8).*exp(-x) stem(x,y) subplot(223) %阶梯图 x = 0:0.25:10 stairs(x,sin(2*x)+sin(x)) subplot(224) %饼状图 x = [21 43 99 1] pie(x) 运行结果如图1-4所示
这里写图片描述

绘制三维曲线

绘制三维折线和曲线

t = 0:pi/50:8*pi; x = sin(t); y = cos(t); z = t; plot3(x,y,z); xlabel('sin(t)'); ylabel('cos(t)'); zlabel('t'); title('三维螺旋线'); 运行结果如图1-5所示:
这里写图片描述

三维网络曲面的绘制

x = -7:0.5:7; y = x; [X,Y] = meshgrid(x,y); Q = sqrt(X.^2+Y.^2)+eps; Z = cos(Q)./Q; mesh(X,Y,Z); grid on; axis([-10 10 -10 10 -1 1]); xlabel('x'); ylabel('y'); zlabel('z'); 运行结果如图1-6所示
这里写图片描述

三维阴影曲面的绘制

x = -7:0.5:7; y = x; [X,Y] = meshgrid(x,y); Q = sqrt(X.^2+Y.^2)+eps; Z = cos(Q)./Q; surf(X,Y,Z); grid on; axis([-10 10 -10 10 -0.5 1.5]); shading interp; xlabel('x'); ylabel('y'); zlabel('z');

热门文章