MATLAB快速入门——学习笔记

本文代码来自于:【最佳!】Matlab与机器学习入门、进阶与提高,从0到1开启你的算法工程师之路!_哔哩哔哩_bilibili

I. 清空环境变量及命令

%% I. 清空环境变量及命令
clear all   % 清除Workspace中的所有变量
clc         % 清除Command Window中的所有命令

II. 变量命令规则

1. 变量名区分大小写

A = 2
a = 3

  2. 变量名长度不超过63位

% ABCDEFGHIJKLMNOPQRSTUVWXYZ123456ABCDEFGHIJKLMNOPQRSTUVWXYZ123456 = 3

3. 变量名以字母开头,可以由字母、数字和下划线组成,但不能使用标点

% 3A = 4 %读者可尝试运行一下该注释代码,注意观察运行结果
% .a = 5
% /b = 5
a_2 = 3
% a.2 = 4

 4. 变量名应简洁明了,通过变量名可以直观看出变量所表示的物理意义

A = rand(3,5)           % A是一个三行五列的随机矩阵
rows = size(A, 1)       % 计算A的行有几个数
cols = size(A, 2)       %计算A的列有几个数

III. MATLAB数据类型

1. 数字

2 + 4

10 - 7

3 * 5

8 / 2

 2. 字符与字符串

s='a'           %字符

abs(s)          %abs(),数值的绝对值和复数的幅值;
                %此处求出的结果为对应a的ASCII码的值,即97

char(65)        %char(),将整数转换为字符
                %对应ASCII码值为65的字母:‘A’

num2str(65)     %把数值转换成字符串

str='I love MATLAB & Machine Learning.'

length(str)     %计算str字符串的长度,包含空白和标点符号

help num2str    %不懂的函数可以用help num2str的形式查取定义和使用方法
doc num2str     %文档形式介绍该函数

3. 矩阵

%二维数组
A=[1 2 3;4 5 6;7 8 9]   %;表示换行
B=A'                    %转置
C=A(:)                  %转换为列向量,此处转换与C语言不同
D=inv(A)                %求A的逆矩阵

%三维数组
E=zeros(10,5,3)         %定义一个三维数组为10*5*3的数组,输出为三个10*5的数组
E(:,:,1)=rand(10,5)     %给第一个10*5的数组赋值
E(:,:,2)=randi(5,10,5)  %给第一个和第二个数组赋值
E(:,:,3)=randn(10,5)

4. 元胞数组

A=cell(1,6)             %Create a 3-by-3 cell array of empty matrices.
A=cell(3,4,2);size(A)   %Create a 3-by-4-by-2 cell array of empty matrices.

A{2}=eye(3)             %给A的第二个矩阵赋值
A{5}=magic(5)           %给A的第五个矩阵赋值
B=A{5}

 5. 结构体

books = struct('name',{{'Machine Learning','Data Mining'}},'price',[30 40])
books.name
books.name(1)           %返回元胞数组
books.name{1}           %返回字符串

 IV. MATLAB矩阵操作

1. 矩阵的定义与构造

A = [1 2 3 5 8 5 4 6]
B = 1:2:9
C = repmat(B, 3, 1)
D = ones(2, 4)

 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     % G * B = A     G * B * pinv(B) = A * pinv(B)    G = A * pinv(B)
H = A ./ B

 3. 矩阵的下标

A = magic(5)
B = A(2,3)
C = A(3,:)
D = A(:,4)
[m, n] = find(A > 20)

V. MATLAB逻辑与流程控制

1. if ... else ... end

A = rand(1,10)
limit = 0.75;
B = (A > limit);   % B is a vector of logical values
if any(B)
  fprintf('Indices of values > %4.2f: \n', limit);
  disp(find(B))
else
  disp('All values are below the limit.')
end

2. for ... end

k = 10;
hilbert = zeros(k,k);      % Preallocate matrix
for m = 1:k
    for n = 1:k
        hilbert(m,n) = 1/(m+n -1);
    end
end
hilbert

3. while ... end

n = 1;
nFactorial = 1;
while nFactorial < 1e100
    n = n + 1;
    nFactorial = nFactorial * n;
end
n

factorial(69)
factorial(70)

prod(1:69)
prod(1:70)

4. switch ... case ... end

mynumber = input('Enter a number:');

switch mynumber
    case -1
        disp('negative one');
    case 0
        disp('zero');
    case 1
        disp('positive one');
    otherwise
        disp('other value');
end

VI. MATLAB脚本与函数文件

1. 脚本文件

myScript

 2. 函数文件

mynumber = input('Enter a number:');
output = myFunction(mynumber)

 VII. 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');
set(get(AX(1),'Ylabel'),'String','Slow Decay') 
set(get(AX(2),'Ylabel'),'String','Fast Decay') 
xlabel('Time (\musec)') 
title('Multiple Decay Rates') 
set(H1,'LineStyle','--')
set(H2,'LineStyle',':')

2. 三维立体绘图

t = 0:pi/50:10*pi;
plot3(sin(t),cos(t),t)
xlabel('sin(t)')
ylabel('cos(t)')
zlabel('t')
grid on
axis square

3. 图形的保存与导出

% (1) Edit → Copy Figure
% (2) Toolbar → Save
% (3) print('-depsc','-tiff','-r300','picture1')
% (4) File → Export Setup

VIII. MATLAB文件导入

1. mat格式

save data.mat x y1 y2
clear all
load data.mat

2. txt格式

M = importdata('myfile.txt');

S = M.data;
save 'data.txt' S -ascii
T = load('data.txt');

isequal(S, T)

 3. xls格式

xlswrite('data.xls',S)
W = xlsread('data.xls');
isequal(S, W)

xlswrite('data.xlsx',S)
U = xlsread('data.xlsx');
isequal(S, U)

 4. csv格式

csvwrite('data.csv',S)
V = csvread('data.csv');
isequal(S, V)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值