MATLAB使用笔记

第一章 MATLAB基本语法

%% 一、清空环境变量及命令
%%
clear all   % 清除Workspace中得所有变量
clc         % 清除Command Window中的所有命令
%% 二、变量命名规则
%% 
% 1.变量名区分大小写
A = 2;
a = 3;

%% 
% 2.变量名长度不超过63位
% DASDSDDDHDGHJGHJHVGVGVGVADGDGSAVGDVGHSAVDSAGDVGHSVGHVDHGHGVHGHGSDDADG = 4

%% 
% 3.变量名以字母开头,可以由字母、数字、和下划线组成,但不能使用标点
% 3A = 4
% .a = 5
% /b = 5
a_2 = 3;
% a.2 = 4
%% 三、matlab数据类型
%%
% 1.数字
2 + 4;
10 - 7;
2 * 3;
5 / 1;

%%
% 2.字符与字符串
s = 'a';
abs(s)
char(65)
num2str(65)

str = 'I Love matlab!';

length(str)

%%
%3. 矩阵
A = [1 2 3; 4 5 2; 3 2 7];
B = A';                  % B = A的转置
C = A(:);                % 对矩阵A按列拉伸
D = inv(A);              % A的逆矩阵
A * D;

% rand、randi和randn的区别
% 1.rand生成均匀分布的伪随机数。分布在(0~1)
%   语法:rand(m,n)生成m行n列的均匀分布的伪随机数
%       rand(m, n, 'double')生成指定精度的均匀分布的伪随机数,参数还可以是‘single’
%       rand(RandStream, m, n)利用指定的RandStream(随机种子)生成伪随机数
% 2.randn 生成标准正太本部的伪随机数(均值为0,方差为1)
%   语法同上
% 3.randi生成均匀分布的伪随机整数
%   语法:randi(iMax)在开区间(0, iMax)生成均匀分布的伪随机数
%       randi(iMax, m, n)在开区间(0,iMax)生成mXn型随机矩阵
%       r = randi([iMin, iMax], m, n)在开区间(iMin, iMax)生成mXn型随机矩阵
E = zeros(10, 5, 3);     %zeros(行,列,维度)
E(:,:,1) = rand(10, 5);
E(:,:,2) = randi(5, 10, 5);
E(:,:,3) = randn(10, 5);

%%
%4.元胞数组
A = cell(1, 6);              %元胞数组中装1行6列 ,a = b = 666
A{2} = eye(2);               %A{1}索引从1开始
A{5} = magic(5);             %magic(n)生成一个n阶幻方,就是把1-n^2拍成一个n*n的矩阵,使得矩阵的每行、每列,以及主、副对角线上之和都相等,等于n*(n^2+1)/2
B = A{5};

%%
% 5.结构体(相当于python中的字典)
books = struct('name', {{'dl', 'sl'}}, 'price',[30 40]);
books.name
books.name(1)               % ()取出来的是cell      
books.name{1};               % {}取出来的是字符串
books.price

%% 四、MATLAB矩阵操作
%%
% 1.矩阵的定义与构造
A = [1 2 3 4 5 6 7 8 9];
B = 1:2:9;                   % 最小值:步长:最大值
C = repmat(B, 3, 1);         % repmat(重复对象, 行数,列数)
A = [1 2 3; 4 5 2; 3 2 7];
D = repmat(A, 2, 2); 
E = ones(2, 4);              % ones(行,列)值全为1

%%
% 2.矩阵的四则运算
A = [1 2 3 4; 5 6 7 8];
B = [1 1 1 1; 1 1 1 1];
C = A + B;
D = A - B;
E = A * B';
F = A .*B;                   % 对应项相乘
G = A / B;                  % G * B = A
H = A ./B;

%%
% 3.矩阵的下表
A = magic(5);
B = A(2, 3);                 % 取矩阵第二行第三列的数
C = A(3, :);                 % 取矩阵第三行的数
D = A(:, 4);                 % 取矩阵第四列的数
[~ , ~] = find(A > 20);      % 找大于20的序号值/矩阵(索引值)

%% 五、MATLAB逻辑与流程控制
%%
% 1.if ...end
a=100;
b=20;
if a>b
    a;
end

%%
% 2.if...else...end
a=100;
b=50;
if a>b
    'yes';
else
    'no';
end

%% 
% 3.1for...end

sum = 0;
for n=1:5                     %[1,5]
    sum = sum + n^2;
end
 
% 3.2嵌套for循环
sum = 0;
for i=1:5
    p=1;
    for j =1:i
        p=p*j;
    end
    sum = sum + p;
end

%% 
% 4.while循环
s=0;
n=1;
while n<=10
    s=s+n;
    n=n+1;
end

%% 
% 5.switch...case...end
a = 2;
switch a
    case 1
        a = 100;
    case 2
        a = 200;
    otherwise
end
a;

%% 
% 6.try..catch
try
    a = 5 / 0;
catch
    '程序错误';
end

m = rand(3,4);
m;
n = magic(5);
try
    a = m*n;
    disp(a)                 % disp()显示数据内容
catch err
    disp(size(m))
    disp(size(n))
end
disp(m)

%% 六、MATLAb基本绘图操作
%%
% 1.二维平面绘图
x = 0:0.01:2*pi;            % 起始值:步长:结束值
y = sin(x);                 
figure
plot(x, y)
title('y = sin(x)')
xlabel('x')
ylabel('sin(x)')
xlim([0 2*pi])

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');

%%
% 2.三维立体绘图
t = 0:pi/50:10*pi;
plot3(sin(t), cos(t), t)
xlabel('sin(t)')
ylabel('cos(t)')
zlabel('t')
hold on 
hold off
grid on                 %加网格线
axis square             %优化绘图

[x, y, z] = peaks(30);
mesh(x,y,z)
grid

第二章 项目实战

2022年中国研究生数学建模竞赛C题
汽车制造涂装-总装缓存调序区调度优化问题
题目及数据:
文件地址:2022华为杯数学建模
https://www.aliyundrive.com/s/njquKLDGWH2
点击链接保存,或者复制本段内容,打开「阿里云盘」APP ,无需下载极速在线查看,视频原画倍速播放。

讲解地址:
讲解:
代码地址:
代码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值