基本命令
clear all %清除Workspace中的所有变量
clc %清除Command Window中的所有命令
%和%%是注释
whos%显示当前内存中的变量信息
基础函数
abs()%取绝对值
char(65)%将ASCII码数值变成字符
num2str(65)%将里面的内容变成字符串
length()%字符串长度,不把'/0'的长度计算进去
path()%将路径添加到搜索路径表的最后
矩阵
A[1 2 3;4 5 2;3 2 7]%创建矩阵
A'%矩阵转置
A(:)%展开矩阵成一列
inv(A)%方阵求逆,矩阵和自己的逆矩阵相乘等于单位矩阵
E=zeros(10,5,3)%创建10行5列3层的三维矩阵注意:MATLAB的索引值不从0开始,从1开始!!!!!E(:,:,1)=rand(10,5)%创建一个10行5列的矩阵,其中的元素是从0到1之间的随机数
,给到E矩阵的第1层
E(:,:,2)=randi(5,10,5)%创建一个10行5列的矩阵,其中的元素是最大为5的正整数的随机数,给到E矩阵的第2层
E(:,:,2)=randi([2,5],10,5)%创建一个10行5列的矩阵,其中的元素是最大为5最小为1的整数的随机数,给到E矩阵的第2层
E(:,:,3)=randn(10,5)%创建一个10行5列的矩阵,其中的元素是标准正态分布中生成的随机数,给到E矩阵的第3层
eye(3)%创建一个3x3的单位矩阵,即主对角线上的元素为1,其它位置的元素为0
magic(5)%生成一个5x5的幻方/魔方矩阵。幻方矩阵是指在每行、每列以及主对角线的元素和均相等的方阵。
B=1:2:9 %创建一个向量B,其中的元素从1开始,以步长2递增,直到不超过9,最后不一定要出现9
repmat(B,3,2)%创建一个新的矩阵,将矩阵B纵向复制3次,横向复制2次
ones(2,4)%创建一个2行4列元素全是1的矩阵A+B%加
A-B%减
A*B%乘
A.*B%点乘
A/B%除
A./B%点除A(2,3)%2行3列元素
A(3, :)%3行一整行,:代表全部
A(:, 4)%4列全部
[m,n]=find(A > 20)%找到矩阵A中大于20的元素的行列索引,返回行索引和列索引的向量m和n
元胞
A=cell(3,4)%创建一个大小为3x4的空元胞数组
A{2}=eye(3)%创建一个3x3的单位矩阵,放在元胞索引为2的位置
B=A{5}取出元胞位置为5的对象给到B
结构体
books=struct('name',{{'Machine Learning','Data Mining'}},'price',[30 40])
%name: {'Machine Learning' 'Data Mining'}
%price: [30 40]books.name
% 1×2元胞数组
%{'Machine Learning'} {'Data Mining'}books.name(1)
%取出索引1里面的元胞,可以理解为一个指针
% 1×1元胞数组
%{'Machine Learning'}books.name{1}
%取出索引1里面的元胞的内容,可以理解为实际值
% 1×1元胞数组
%'Machine Learning'
流程控制
if ... else ... end
for ... end
while ... end
switch ... case ... end
绘制二维图像
基础例子
x = 0:0.01:2*pi;%创建向量x
y = sin(x);%创建一一对应的向量y
figure%建立一个幕布
plot(x, y)%画出xy线条
title('y = sin(x)')%增加标题
xlabel('x')% x轴标签
ylabel('sin(x)') % y轴标签
xlim([0 2*pi])%x轴坐标限制
legend('y = sin(x)') % 添加图例
进阶例子
x = 0:0.01:20;
y1 = 200 * exp(-0.05 * x) .* sin(x);
y2 = 0.8 * exp(-0.5 * x) .* sin(10 * x);
figure[AX,H1,H2] = plotyy(x, y1, x, y2,'plot');
%创建一个具有多个y轴的图
%返回三个句柄:图形对象、第一个数据集的线条对象、第二个数据集的线条对象set(get(AX(1),'ylabel'),'String','Slow Decay')
%get(AX(1),'ylabel')用于获取第一个y轴的句柄
%然后set函数用于设置该句柄所代表的对象的属性,设置第一个y轴的标签为"Slow Decay"set(get(AX(2),'ylabel'),'String','Fast Decay')
xlabel('Time (\mu sec)')
title('Multiple Decay Rates')
set(H1,'LineStyle','--')
set(H2,'LineStyle',':')
绘制三维图像
t = 0:pi/50:10*pi;
plot3(sin(t),cos(t),t)
xlabel('sin(t)')
ylabel('cos(t)')
zlabel('t')
grid on%打开网格
axis square%将绘图区域设置为一个正方形
图形窗口分割
x=linspace(0,2*pi,60);%在区间[0,2π]中生成包含60个等间距点的向量subplot(2,2,1)%设置当前图形为一个2x2的网格,并将绘图焦点设置在第1个子图上
plot(x,sin(x)-1);
title('sin(x)-1');
axis([0,2*pi,-2,0]);%axis设置x和y轴的可视范围,x 轴0到2π,y轴-2 到0subplot(2,1,2)
plot(x,cos(x)+1);
title('cos(x)+1');
axis([0,2*pi,0,2]);subplot(4,4,3)
plot(x, tan(x));
title('tan(x)');
axis([0,2*pi,-40,40]);subplot(4,4,8)%这回不按照顺序排下去了,就会跳开几个位置
plot(x,cot(x));
title('cot(x)');
axis([0,2*pi,-35,35]);
hold on/off
hold on 命令用于将绘图模式设置为保持当前图形,并在其上绘制新的图形,而不清除现有的图形。这样,你可以在同一张图上绘制多个曲线或图形,而不会清除先前的内容。
hold off 命令用于关闭绘图保持功能,这将导致在下一次绘图时清除现有的图形。当不再需要在同一张图上绘制新的内容时,使用 hold off 可以恢复正常的绘图模式。
因为一般是默认hold on的,所以直接执行hold on不会有什么明显的现象。
x = 0:0.1:2*pi;
y1 = sin(x);
y2 = cos(x);
plot(x, y1)
hold off %hold on
plot(x, y2)
xlabel('x')
ylabel('y')
title('Sin(x) and Cos(x)')
legend('sin(x)', 'cos(x)')
图形的保存与导出
(1) 编辑 -> 复制图形
(2) 文件 -> 另存为
(3) 查看 -> 属性编辑器
(4) 调整图片质量:文件 -> 导出设置 -> 大小 设定高度宽度,这时候导出的图形会更加清晰
调用函数
新建一个函数文件funsin.m和一个脚本文件callsin.m,用脚本文件来调用函数文件。
函数文件内容
function f = funsin(var) %定义funsin函数,入参var,输出是变量f。函数的名称必须与文件名相同,并且函数定义必须位于文件的开头
f = sin(var) %将数值给到输出变量f
end
脚本文件内容
type funsin.m%/在命令窗口中显示函数文件的内容
x=[0 pi/2 pi 3*pi/2 2*pi]
sinx=funsin(x)%调用函数
补充内容
搜索路径
当MATLAB 对函数或文件等进行搜索时,都是在其搜索路径下进行的。如果调用的函数在搜索路径之外,那么 MATLAB 会认为该函数不存在。