Matlab 教程

系列文章目录



前言

本科期间学习过数学建模课,硕士课程《数值计算方法》需要用到MATLAB,但本科期间学习时未做笔记导致部分知识遗忘,所以对MATLAB进行二次学习。

参考资料

DearLife-零基础入门Matlab(一篇两个小时就能学完的入门博客)
B站-爱研究的小阿楠-【简洁版】0零基础入门matlab教程基础版,听懂人话就能学会!毕业设计……


1 界面认识

在这里插入图片描述

2 变量命名

2.1变量命名规则:

  1. 变量名区分大小写;
  2. 变量名长度不超过63位
  3. 变量名简洁明了,尽量做到见名知意;
  4. 变量以字母开头,可以由字母、数字和下划线组成,但不能使用标点;

2.2其他规则:

  1. Matlab中的注释

    %% 独占一行的注释(有上下横线分割)

    % 普通注释

  2. 清空环境变量及命令
    clear all: 清除Workspace中的所有变量(右侧工作区)

clc: 清除Command Window中的所有命令(命令行窗口)
; 加;程序结果不会在命令行窗口显示,反之程序结果不会在命令行窗口显示

3 逻辑运算

与:&&
或:||
非:!

4 数据类型

4.1 数字

1+2
4-7
7*8
7/8

4.2 字符与字符串

s = 'a'
abs(s)%查找ASCILL码
char(65)
num2str(65)

str = 'hello matlab'%空格也纳入计算
length(str)

4.3 矩阵

A = [1 2 3; 4  5 2; 6 2 7]
B = A' %矩阵求转置
C = A(:)%矩阵按照列向量展开为一列
D = inv(A)%矩阵求逆
E = A * D%矩阵相乘

E = zeros(10, 5, 3)%创建10行5列的3维矩阵
E(:,:,1) = rand(10, 5)%生成(0,1)之间10行5列的均匀分布的伪随机数
E(:,:,2) = randi(4,10, 5)%生成(0,4)之间10行5列的均匀分布的伪随机数
E(:,:,3) = randn(10, 5)%生成(0,1)之间10行5列的正态分布的伪随机数
输出:有点麻烦,所以略

4.4 元胞数组

A = cell(1,6) %定义元胞数组
A{2} = eye(3) %产生m×n的单位矩阵
A{5} = magic(5)%magic是一种函数,用于产生魔方矩阵,它的每行、列以及对角线的数之和相等。该和的值为1+2+3+.....+n^2的和再除以n,n必须为大于或等于3的整数。
B = A{5}
C = A{2}
输出:
A =

  1×6 cell 数组

    []    []    []    []    []    []


A =

  1×6 cell 数组

    []    [3×3 double]    []    []    []    []


A =

  1×6 cell 数组

    []    [3×3 double]    []    []    [5×5 double]    []


B =

    17    24     1     8    15
    23     5     7    14    16
     4     6    13    20    22
    10    12    19    21     3
    11    18    25     2     9


C =

     1     0     0
     0     1     0
     0     0     1

4.5 结构体

books = struct('name',{{'Machine Learning','Data Mining'}},'price',[30 40])
books.name%属性
books.name(1)%输出为cell
books.name{1}%字符串
输出:
books = 

  包含以下字段的 struct:

     name: {'Machine Learning'  'Data Mining'}
    price: [30 40]


ans =

  1×2 cell 数组

    'Machine Learning'    'Data Mining'


ans =

  cell

    'Machine Learning'


ans =

    'Machine Learning'

5 矩阵构造与四则运算

5.1 矩阵定义与构造

A = [1 2 3 5 8 5 4 6]
B = 1:2:9 %输出1-9间数,步长为2
C = repmat(B,3,1) %将B重复3行1列
D = ones(2,4) %生成2行4列值为1的矩阵
输出:
A =

     1     2     3     5     8     5     4     6


B =

     1     3     5     7     9


C =

     1     3     5     7     9
     1     3     5     7     9
     1     3     5     7     9


D =

     1     1     1     1
     1     1     1     1

5.2 矩阵的四则运算

A = [1 2 3 4; 5 6 7 8]
B = [1 1 2 2; 2 2 1 1]
C = A + B % 矩阵求和
D = A - B % 矩阵作差
E = A * B'% 矩阵相乘
F = A .* B % 矩阵对应位置相乘
G = A / B % A乘以B的逆
H = A ./ B %对应位置相除
输出:
A =

     1     2     3     4
     5     6     7     8


B =

     1     1     2     2
     2     2     1     1


C =

     2     3     5     6
     7     8     8     9


D =

     0     1     1     2
     3     4     6     7


E =

    17    13
    41    37


F =

     1     2     6     8
    10    12     7     8


G =

    1.8333   -0.1667
    3.1667    1.1667


H =

    1.0000    2.0000    1.5000    2.0000
    2.5000    3.0000    7.0000    8.0000

6 矩阵下标

A = magic(5)
B = A(2,3)
C = A(3,:) % 输出第3行
D = A(:,4) % 输出第4列
[m, n] = find(A>20) % 找大于20的序号值/矩阵
输出:
A =

    17    24     1     8    15
    23     5     7    14    16
     4     6    13    20    22
    10    12    19    21     3
    11    18    25     2     9


B =

     7


C =

     4     6    13    20    22


D =

     8
    14
    20
    21
     2


m =

     2
     1
     5
     4
     3


n =

     1
     2
     3
     4
     5

7 程序结构

7.1循环结构

7.1.1 for循环

程序结构
for   循环结构 =初值:步长:终值
	执行语句1
	.
	.
	.
	执行语句n
end

实例运算1:
求12+22+32+32+42+52+……+102

sum = 0
for n = 1:10
    sum = sum + n^2;
end
sum
输出:
 385

实例运算2:
求 1!+2!+3!+4!+5!+……10!

sum = 0
for i = 1:10;
    p = 1;
    for j = 1:i;
        p = p*j;
    end
    sum = sum + p;
end
sum
输出:
sum = 0
sum = 4037913

7.1.2 while循环

程序结构
while 条件表达式
	  执行语句1
	  .
	  .
	  .
	  执行语句n
end

实例运算1:
求1+2+3+4+5+6+7+8+9+10的和。

s=0;
n=1;
while n <= 10;
    s = s + n;
    n=n+1;
end
fprintf('%d',s);
输出::55

7.2 分支结构

7.2.1 if语句

实例运算:

a = 100;
b = 20;
if a > b
    fprintf('A大于B呀\n')
else
     fprintf('A比B小呀\n')
end
输出:A大于B呀

7.2.2 switch语句

程序结构
switch 表达式(数值或字符串)
	case 数值或字符串1
		语句体1;
	case 数值或字符串2
		语句体2;
	.
	.
	.
	otherwise
		语句体n;
end

实例运算1

number = input('请输入0-10的数字:');
switch(number)
    case{1,3,5,7,9}
        disp('输入的值为奇数');
    case{0,2,4,6,8,10}
        disp('输入的值为偶数');
    otherwise
        disp('输入有误,再见');
end
输入:41
输出:输入有误,再见

8 二维平面绘图

需要的参数:
在这里插入图片描述
在这里插入图片描述

8.1 简易二维平面绘图

x = 0:0.01:2*pi;%x取0-2*pi之间的值,步长为0.01
y = sin(x);
figure %建立幕布
plot(x,y)%绘制图片
title('y = sin(x)')%命名图片标题
xlabel('x')%x轴标签
ylabel('y')%y轴标签
xlim([0 2*pi])

输出:
在这里插入图片描述

8.2 复杂二维平面绘图

x = 0:0.1: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');%y1轴标签
set(get(AX(2),'Ylabel'),'String','Fast Decay');%y2轴标签
xlabel('Time(\musec)');
title('Multiple Decay Rates');
set(H1,'LineStyle','--');%设置线形
set(H2,'LineStyle',':');%设置线形

输出:
在这里插入图片描述

9 三维立体绘图

9.1 简易三维立体绘图

t = 0:pi/50:10*pi;
plot3(sin(t),cos(t),t)%绘制立体图
xlabel('sint(t)')
ylabel('cos(t)')
zlabel('t')
grid on % 在图像上添加网格
axis square% 将三维图的范围放在正方体内

输出:

在这里插入图片描述

9.2 双峰函数

[x,y,z]=peaks(30);
mesh(x,y,z)
grid %绘制图像

输出:
在这里插入图片描述

10 图像的导出与保存

在弹出图像窗口中进行,可以保存、复制图像,并能调整图像大小


11 函数

11.1 函数的定义

函数定义格式:

function 输出形参列表 =函数名(输入形参列表)
% 注释
函数语句体
end

  1. 函数必须是一个单独的.m文件;
  2. 函数文件的文件名必须与函数名一致
  3. 当输出形参多于一个时,用方括号括起来
  4. 注释部分,说明函数功能与变量代表的含义。

11.2 函数的调用

可在新文件或命令窗口调用函数

11.3 多函数

一个.m的文件中可以定义多个函数,必须另外建立一个文件来调用这个.m中定义的文件。

w = f * 2;
end
w

%% 11.2 函数的调用
在弹出图像窗口中进行,可以保存、复制图像,并能调整图像大小


总结

例如:以上就是今天要讲的内容,本文仅仅简单介绍了MATLAB的使用,而MATLAB提供了大量能使我们快速便捷地处理数据的函数和方法。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值