第一课 MATLAB入门基础

Matlab常见快捷键的使用

快捷键组合功能
ctrl+r注释
ctrl+t取消注释
ctrl+a全选
ctrl+i自动整理代码对齐格式
ctrl+z撤销改动
ctrl+y取消撤销
Tab多行代码右移
shift+tab多行代码左移
函数前几个字母+tab自动补齐代码
ctrl+f查找替换
ctrl+w关闭当前的.m代码框
F5保存并运行程序
F9执行选中的代码块
F10单步执行
F11遇到函数时候,进入函数内部
ctrl+c强制中断运行
命令窗口按下ctrl+q退出matlab

Matlab基本使用规则

  • 标点符号必须是英文的;
  • 分号作用不在命令窗口输出结果;
  • 除号有 / 或 \ ,它两个的关系是:a除以b表示为a/b,或 b\a
  • 命令窗口输入运算的时候,不想输一个计算一个,利用shift+enter可换行输入
  • clear+变量名,清除工作空间的指定变量;
  • 命令窗口输入doc+函数名,查看函数帮助文档;类似help+函数名
  • clear all清除Workspace(工作区)中的所有变量
  • clc 清除Command Window(命令行窗口)中的所有命令
  • matlab下标是从1开始的,区分其他语言。

Matlab变量命名规则

1、变量名长度不超过63位
ABCDEFGHIJKLMNOPQRSTUVWXYZ123456ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567 = 3

在这里插入图片描述
会自动截断为63字符。

2、变量区分大小写
A = 2
a = 3

在这里插入图片描述
工作区显示两个,表示A和a是两个变量。

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

在这里插入图片描述

4、 变量名应简洁明了,通过变量名可以直观看出变量所表示的物理意义
A = rand(3,5)  %rand函数就是随机生成0-1之间的数
rows = size(A, 1)  %行数
cols = size(A, 2)  %列数

在这里插入图片描述

Matlab数据类型

数字

数字之间的四则运算

字符和字符串char

num2str()函数:
把数值转换成字符串, 转换后可以使用fprintf或disp函数进行输出

%把数组A中的数转换成字符串表示形式。
A=123;
str = num2str(A)

在这里插入图片描述

A=[1 2 3]
str = num2str(A)

在这里插入图片描述

A=[1 2 3;4 5 6]
str = num2str(A)

在这里插入图片描述
str = num2str(A, precision)
  把数组A转换成字符串形式表示,precision表示精度, 比如precision为3表示保留最多3位有效数字, 例如0.5345转换后为0.534,1.2345转换后为1.23。即从左边第一个不为0的数开始保留3个数值。

A=[1.456 2 3;4 5.214 0.167]
str = num2str(A,2)

在这里插入图片描述 str = num2str(A, format)
  按format指定格式进行格式化转换,通常’%11.4g’是默认的。

A=[1.456 2 3;4 5.214 0.167]
str = num2str(A,'%.5f ')

在这里插入图片描述

s = 'a'  % 引号可用来定义字符类型,char   ‘a‘
abs(s)  % 求字符的AccII码     97
char(65) % 将AccII码转换成字符类型   'A'
num2str(65)  % 将数字类型转化成字符类型   '65'
str = 'I Love MATLAB & Machine Learning.' %定义字符串类型
length(str) %求字符串长度,包括空格和句号     33
矩阵
A = [1 2 3 6; 4 5 2 1; 3 2 7 9]  % 三行四列
B = A'   % 转置,四行三列
C = A(:) % 按列取A得值,构成一个列向量

在这里插入图片描述

A = [1 2 3 ; 4 5 2 ; 3 2 7 ] 
D = inv(A) % inv函数真能对方阵进行求逆运算
A * D

在这里插入图片描述
randi 生成均匀分布的伪随机整数
主要语法:randi(iMax)在开区间(0,iMax] 生成均匀分布的伪随机整数
randi(iMax,m,n)在区间(0,iMax] 生成m行n列型随机矩阵
r = randi([iMin,iMax],m,n)在开区间[iMin,iMax] 生成m行n列随机矩阵

randi(5)

在这里插入图片描述

randi(5, 3,3)

在这里插入图片描述

randi([5,8],4,2)

在这里插入图片描述

E = zeros(10,5,3)  %创建10*5*3的零矩阵,3个10行5列的零矩阵
E(:,:,1) = rand(10,5)  % 将E的第一个零矩阵填充一个10行5列的0-1随机矩阵
E(:,:,2) = randi(5, 10,5)  % 在区间(0,5]内生成10行5列整数矩阵
E(:,:,3) = randn(10,5)  %randn生成随机数(均值为0,方差为1)

在这里插入图片描述在这里插入图片描述

元胞数组,多维数组的另一种表示方式cell
A = cell(2, 6)  % A初始化为一个2行6列的空cell类型数据。
A{1,2} = eye(3)  %eye生成3*3标准矩阵,填充到第一行第二个
A{2,1} = eye(3)
%magic生成一个n*n的矩阵,矩阵元素是由
% 整数1到n^2组成的并且任何行任何列的和都相等,阶数n必须是大于等于3的标量
A{1,5} = magic(5)  
B = A{1,5}
C=A{1,2}

在这里插入图片描述

结构体struct
books = struct('name',{{'Machine Learning','Data Mining'}},'price',[30 40])
books.name
books.name(1)
books.name{1}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Matlab矩阵操作

矩阵的构建
A = [1 2 3 5 8 5 4 6]
B = 1:2:9
D = ones(2, 4)  %2行4列全为1
C = repmat(B, 3, 1)  %复制B为三行一列
C = repmat(B, 3, 2)  %复制B为三行2列

在这里插入图片描述
在这里插入图片描述

矩阵四则运算

定义两个矩阵:
在这里插入图片描述

C = A + B  %对应元素相加
D = A - B  %对应元素相减
E = A * B' %矩阵正常相乘,第一行乘以第一列

在这里插入图片描述
逆矩阵:
1.对于方阵A,如果为非奇异方阵,则存在逆矩阵inv(A)

2.对于奇异矩阵或者非方阵,并不存在逆矩阵,但可以使用pinv(A)求其伪逆

若A为非奇异矩阵,请不要使用pinv求逆,虽然计算结果相同,即inv( A ) = pinv( A )但pinv的计算复杂度较高。

G = A / B     % G * B = A     G * B * pinv(B) = A * pinv(B)    G = A * pinv(B)

在这里插入图片描述
点乘和点除:对应位置计算

F = A .* B  %对应位置相乘
H = A ./ B

在这里插入图片描述

矩阵的下标

从1开始计数的,并不是从零开始。
在这里插入图片描述
筛选的结果:
m为按行索引符合条件的下标,比如2表示第一行第二个元素
n为an列索引符合条件的列数。比如1表示第一列有符合条件的
在这里插入图片描述

Matlab逻辑与流程控制

1、if … else … end
A = rand(1,10)  %0-1之间
limit = 0.75;
B = (A > limit);   % B为1*10的表,符合A > limit的记为1否则为0,B为logical格式
if any(B)   %any判断是否为非零,非零为true记为1
  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

定义一个70以内的求阶乘的函数。

n = 1;
nFactorial = 1;
while nFactorial < 1e100   %1*10^100
    n = n + 1;
    nFactorial = nFactorial * n;
end
n
nFactorial

在这里插入图片描述
上面函数可以用matlab自带的函数实现。

factorial(70)

在这里插入图片描述
prob()函数
如果A是向量,prod(A)返回A向量的乘积。
如果A是矩阵,prod(A)将A看作列向量,返回每一列元素的乘积并组成一个行向量B。
如果A是多维数组,prod(A)沿着第一个非单例作为向量,返回一个行向量数组。
B = prod(A,dim)
沿着指定的dim标量的维计算A矩阵的乘积。注:dim=2表示沿行计算。

prod(1:70)  %将1-70的乘积返回

在这里插入图片描述

M = magic(3)
prod(M)%计算矩阵A的每一列元素的乘积
prod(A,2)%计算矩阵A每一行元素的乘积, dim=2表示按行计算

在这里插入图片描述

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

在这里插入图片描述

MATLAB脚本与函数文件

1、脚本文件

先定义一个脚本文件:命名为myScript.m

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

然后主程序直接输入名称就可以使用:

% 1. 脚本文件,可直接执行
myScript

在这里插入图片描述

2、函数文件

定义一个函数文件,名字为myFunction.m

function output = myFunction(input)

switch input
    case -1
        output = 'negative one';
    case 0
        output = 'zero';
    case 1
        output = 'positive one';
    otherwise
        output = 'other value';
end
end

使用时候需要输出函数名字和对应的参数:

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

在这里插入图片描述

MATLAB基本绘图

1. 二维平面绘图
x = 0:0.01:2*pi;  %[0,2pi]每次增加0.01步长,x取值为离散的
y = sin(x);
figure  %对应一个空的画表
plot(x, y) %y=sin(x)画出来
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) File → Export Setup %设置像素点200
适用于论文写作
在这里插入图片描述

MATLAB保存与读取外部文件

1. mat格式

将工作区的x,y1,y2保存为data.mat

save data.mat x y1 y2

在这里插入图片描述
读取

load data.mat
2. txt格式

建立一个txt文档
在这里插入图片描述
然后读取

M = importdata('myfile.txt');

在这里插入图片描述

S = M.data;  %将值赋值给S
save 'data.txt' S -ascii  %将S保存为txt文档,Ascii为读取格式
T = load('data.txt');  % 读取
isequal(S, T)  %判断S和T是不是一样

在这里插入图片描述
在这里插入图片描述

3. xls格式,同理xlsx格式

利用S建立xls文件

xlswrite('data.xls',S)

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

  • 8
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值