matlab基础操作(美赛备赛)

Matlab基础操作

美赛备赛基础

一、基础命令/快捷方式

% clear all一个百分号是注释

%% Section 两个百分号是节(可以分节运行)

运行(运行整个代码)、运行并前进(一节一节的运行)

clc:清空命令行区

clear:清空工作区变量

close:关闭当前图像的窗口

Ctrl+C:强制停止(必须在命令行窗口)

Ctrl+R:注释 Ctrl+T:反注释

Ctrl+I:智能缩进

dpstop if error:建立变量缓冲区,在错误位置自动断点调试

二、数学运算

1.对数

log() 默认以e为底

log10() 以10为底

log(9)/log(3) 利用换底公式求任意底对数

2.指数

exp() 以e为底

pow2(10) 以2为底的指数

nextpow2() 寻找最大的n,是2n-1小于该值(偶尔会用)

3.三角函数

sin( )

cos( )

tan( )

asin( ) 弧度制

acos( )

atan( )

asind( )角度值(d代表角度)

acosd( )

atand( )

4.其他函数

mod( ) 求余数

rem( ) 与被除数符号相同的余数

sign( ) 符号函数

fix( ) 向0舍入

floor( ) 比它小的最大的整数

ceil( ) 比它大的最小的整数

round( ) 四舍五入

roundn(1.0072,-2) 任意位四舍五入

min( )

max( )

mean( ) 平均值

median( ) 中位数

prod( ) 求乘积

sum( ) 求和

var( )/std( ) 方差/标准差(matlab采取的是无偏的)

cov( ) 计算协方差

5.生成随机数

rand(2) 随机生成m个0-1的数,这里括号的2表示生成2个随机数

randi(n) 随机生成一个整数0-n

randn(1) 生成正态分布的随机数

sprand(10,10,0.5) 稀疏均匀分布随机矩阵

rng(‘default’) 随机种子

三、数据基础

realmax 最大值

realmin 最小值

数据过大,会返回inf(无限大)

nan非数

double、single类型

运算符优先级 ^ + -

四、矩阵基础(matlab核心)

1.特殊的矩阵(向量)

1:100(等价于1:1:100)

1:2:100 间隔为2

100: -1:1

[1,2,3] 逗号和空格行,回车和分号列

[1;2;3]

2.矩阵

zeros(10,20)

eye(10)

magic(10),10*10的幻方矩阵,每行每列的和都相等

rand(10),生成10*10的均匀分布随机矩阵

randn(10),生成10*10的正态分布随机矩阵

[xx,yy] = meshgrid(1:100,1:5),基矩阵

repmat(A,m,n),扩充矩阵

3.矩阵运算

A*B 矩阵相乘

A/B 矩阵右除

A\B 矩阵左除

A.*B 矩阵数乘

A./B 矩阵右数除

A.\B 矩阵左数除

对于数+或-矩阵,相当于矩阵的每个元素加减此数

inv(A) 求逆矩阵,必须是方阵

pinv(A) 求伪逆矩阵,非方阵

A’ 求转置

det(A) 求行列式

trace(A) 求行列式A的迹

lu(A) 矩阵A的LU分解

qr(A) 矩阵A的QR分解

eig(A) 矩阵A的特征值和特征向量

4.矩阵数据读取

size( ) 矩阵大小

length( ) 向量大小

A(m,n) 表示提取矩阵的第m,n处的值,matlab中起始值为1(不是0)

A(:,1) 第一列所有元素

A(end,1)最后一行第一列

Matrix_out=reshape(Matrix_in,m,n)

(先遍历行|再遍历列,元素个数一定要不变)

B=repmat(A,2,4) 矩阵扩充

5.补充:
  • 使用GPU加速运算

    A = gpuArray(rand(1e4))

    B=A*A

  • 稀疏矩阵

    [(m,n),value]

    sparse(m,n) 生成稀疏矩阵

    sparse(A) 将矩阵A强制转化为稀疏矩阵

    节省存储空间,对于严重稀疏矩阵可以加快运算速度

6.逻辑变量

logical(2) = 1

==|~=|<|<=|>|>=

isnan( ) 是否非数

isint( ) 是否为无穷大

isempty( ) 是否为空

isreal( ) 是否为实数

& 逻辑与

| 逻辑或

&& 逻辑与(标量,只能用与两个数)

|| 逻辑或(标量,只能用与两个数)
逻辑非

xor 逻辑异或

all 向量全部元素非0为真 all([1,1,1,1])

any 向量存在元素非0为真

for循环

for ii = 1 : 10
		for jj = 1: 10

矩阵尽量提前估计好大小(能提高效率,如果越界赋值,比较耗时间)

计算时间

tic
#代码
toc
  • 多线程

    parfor可以用来加速,不能存在耳机循环结构

    是并行体系,其不同循环中数据不能冲突

    parfor中不能使用break/continue

    第一次启动会比较慢,一旦启动会比较快

五、函数

function [输出形参表:output1,output2,...]=函数名[输入形参表:input1,input2...,]
		#函数题代码部分
end

函数的名字和.m文件名字相同,不要随意改动文件名字,可能会产生调用问题

nargin:输入参量的个数

function c = addme(a,b)
		if nargin==1
				b=1;
		end
		c=a+b;
end

忽略不想要的输出 用 ~表达式

function [c1,c2] = opme(a,b)
		if nargin<2
				b=1;
		end
		c1=a+b;
		c2=a-b;
end
[~,c]=opme(a,b)
[c,~]=opme(a,b)
  • 特殊形式

    函数句柄(类似于c指针)

fun1=@opme;
[a,b]=fun1(1,1)

用@来创建匿名函数,可以减少m文件的创建

fun2=@(x,y)(x+y);
fun2(1,1)

eval表达式,把字符串组成的代码编程代码

eval(['I',num2str(ii)])
  • 符号运算式

    syms构建函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值