20世纪70年代后期,时任美国新墨西哥大学计算机科学系主任的Cleve Moler教授为学生设计了一组调用LINPACK和EISPACK库程序的“通俗易用”的接口,此即是用FORTRAN编写的处于萌芽状态的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
在MATLAB中,命令行窗口常用的命令和功能表如表1-1所示
命令 | 功能 |
---|---|
clc | 删去一页命令窗口,光标回屏幕左上角 |
clear | 从工作空间清除所有变量 |
clf | 清除图形窗口内容 |
help | 查询指定文件的路径 |
顺序结构是指所有组成程序源代码的语句按照由上至下的次序依次执行,知道程序的最后一个语句。这种程序有点事容易编制;缺点是结构单一,能够实现的功能有限。
从键盘输出数据,则可以使用函数input来进行,该函数的调用格式为
A = input(提示语句,选项);
其中,提示信息为一个字符串,用于提示用户输入什么样的数据。
如果在input函数调用时‘s’ 选项,则允许用户输入一个字符串。例如,想输入一个人的名字,可以采用以下命令:
xm = input('What is your name','s');
MATLAB提供的命令窗口输出函数主要有disp,其调用格式为disp(输出项);
其中,输出项可以为字符串,也可以为矩阵。
A = 'Hello, MATLAB';
disp(A);
运行结果如下
Hello, MATLAB
在MATLAB中,选择结构依照不同的条件进行判断,然后根据判断的结果进行某种方法来解决某个问题。
if 条件
语句组1
end
if 条件
语句组1
else
语句组2
end
if <逻辑判断语句1>
语句组1
elseif <逻辑判断语句2>
语句组2
elseif <逻辑判断语句3>
语句组3
…
else
语句组N
end
switch 表达式
case 语句1
语句组1
case 语句2
语句组2
…
case 语句m
语句组m
otherwise
语句组n
end
for 循环变量 = 表达式1:表达式2:表达式3
循环体语句
end
其中,表达式1的值为循环变量的初值,表达式2的值为步长,表达式3的值为循环变量的终值。步长为1时,表达式2可以省略。
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;
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)
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('三维螺旋线');
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');
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');