MATLAB STUDY

关键字

ans         i,j          Inf            NaN           pi

TO LIST KEYWORDS:iskeyword

优先级

variable > built-in-function > subfunction >private functon 

举例:

Format

short  :四位小数         long :15位小数       shortE/longE       bank:2位小数

rat:有理数 355/113

Functions

clc:clear                      clear:消除了所有              who:在workspace里的变量

whos:具体的detail  例如变量类型(初始默认double)

取矩阵中的值方式

A(8):列优先下标号                                           A(3,2)  第三行第二列

A([1 3 5])  :同上,按照编号来                               A([1,3],[1,3])    见上构造出一个集合

A([1 3;1 3]):生成一个矩阵                                         A(3,:)=【】表示把第三行删掉

Colon Operator

当想要创造一个长的矩阵的时候

j:k  [j,j+1,j+2,...,j+m]

j:i:k  [j,j+i,j+2*i,...,j+m*i]

Array Manipulation

.* 单纯的对应位置上的数相乘

A/B 约等于 A*inv(B)

A' 表示对于A进行转置

A^2=A*A   是很复杂的矩阵的乘法哦

Special Matrix

linspace():

eye(n) n*n的单位矩阵

zeros(n1,n2) n1*n2的零矩阵

ones(n1,n2) n1*n2的1填满的矩阵

diag() 

max(A):出现一行 是每一列的最大值

max(max(A)):真的最大值

min(A)

sort(A):一行中各个数字都是独立的

sortrows(A):每一行是绑定一起的,以第一列的为准来排序

find(A): find(A==6) 传出array中6所在的位置

flow control

relational operators

~= == && ||

if else if else

a=3;
if rem(a,2)==0
   disp('a is even')
else 
   disp('a is odd')
end
%注意没有分号哦
%注意加end

for


i=0;
for n=1:2:10   %相当于for(int i=1;i<=10;i+=2)
    i=i+1;
    b(i)=2^n;
end
disp(b) 



for n=1:10
    a(n)=2^n;
end
disp(a)

switch

input_num=1;
switch input_num
    case -1
        disp('1')
    case 0
        disp('aaa')
    case 1
        disp('yes')
    otherwise
        disp('other value')
end

注意没有break 没有分号 最后是otherwise 

还有一个end

while

n=1;
while prod(1:n)<1e100%n的阶乘
    n=n+1;
end 

PRE-allocating Space 

指的是在我们要对于一个矩阵之类进行赋值之前,先确定好其大小,可以很好的加快速度

TIPS

1.在开始写script的时候,记得用clear sth来把你接下去要用的变量已经有的值给删掉,否则它是不会变的,close all来关掉当前figure窗口

2.如果一个矩阵太长,可以用“...”来换行

举个例子:A=[1 2 3 4 5 6;...

                        6 5 4 3 2 1];

3.遇到死循环的时候,可以用Ctrl +C来终止script

4.对于matlab内置的函数,如果想要知道其内容 >>edit(which('mean.m'))

Function

其实也可以没有y,x,如果你的函数没有输入输出值的话

 Function Handles

相当于一个指针,指向了一个函数

具体来说 f=@(x)acos(x) 

f为函数句柄,@是定义句柄的运算符

f=@(x)acos(x) 相当于建立了一个函数文件:
% f.m
function  y=f(x)
y=acos(x);

Cell Array

 看一个cell要用A{1,1},大括号

如果要得到其中一个对应的元素 A{1,1}(1,1)

Cat()

举例:Array concatenation

A=[1 2;3 4];B=[5 6;7 8];

C=cat(1,A,B)   C=cat(2,A,B)   C=cat(3,A,B)   

用cat把两个或几个拼接起来,这样子在构造的时候就不用三维了 

reshape()

C=reshape(A,1,4)   C是把A变成1行4列的

Save() load()

EXCEL FILE READING:xlsread(),xlswrite()

Score=xlsread('04score.xlsx')

Score=xlsread('04score.xlsx','B2:D4')

[Score Header]=xlsread('04Score.xlsx')    Score:number  Header:String

I/O functions

fopen fclose fscanf fprintf feof

fid=fopen('[filename]','[permission]');      'r' 'r+'  'w'  'w+'  'a'  'a+'

Reading from files

 

高阶统计绘图的函数

plotyy:可以有y1,y2

histogram:hist(y,10) y是数值,10表示分成10个柱形(用来查看整体情况)

bar:bar(x) 用于查看各个情况,bar3(y) 3D

pie:pie(a)  【0,0,0,1】的1是separate

polar:polar(theta,r);  极坐标thera是角度,r是半径

stairs,stem:  stairs(y)阶梯状的连接,stem:包围的地区被阴影覆盖(hold on)

boxplot erroebar

绘图函数

fill(x,y,'') x,y是函数,fill表示涂满

text()

%%
t=(1:2:15)'*pi/8;
x=sin(t);
y=cos(t);
fill(x,y,'r');
axis square off;
text(0,0,'STOP','Color','w','FontSize',80,...
     'FontWeight','bold','HorizontalAlignment','center');
 %%
t = 0:pi/2:2*pi; %画一圈,每隔90度驱一个点
x = cos(t);
y = sin(t); %颠倒过来,这样圆的起点就是0了
fill(x,y,'y','Linewidth',5) 
axis square off
text(0, 0, 'WAIT', 'Color', 'k', 'FontSize', 70, ...
    'FontWeight','bold','HorizontalAlignment','center')
%在坐标(0,0)显示WAIT,颜色黑,字号80,线条加粗,居中对齐

bar的涂色功能,如果你有很多个,想要分别涂的话

 G=[48 39 29 24 13];
 S=[29 27 17 26 8];
 B=[29 23 19 32 7];
 H=bar(1:5,[G' S' B']);
 H(1).FaceColor = [0 0 0];
H(2).FaceColor = [3 89 22];
H(3).FaceColor = [23 4 11];

imagesc():把一个三维的变成二维的,而其中的z轴用颜色深度表示

colorbar colormap:   colormap(hot/cool/gray/spring/...)

meshgrid  :不是点的操作,而是作为面的填充  

x=-2:1:2;
y=-2:1:2;
[x,y]=meshgrid(x,y)

 mesh()  surf():用来展现三维的图形,参数为X,Y,Z 

contour() 把三维投射到二维平面

view() 

GUI

guide进入

双击那个图形就可以进入更改页面了,tag不要改,用于函数里面,相当于id

axes是用来画画的,有多个axes则可以用:surf(handles.axes)表示这次是在axes1上面画画

axes(handles.axes1):宣告axes1为axes,然后以后就是在axes1上默认画画

set() get()

get是用来得到一些参数:a=get(handles.slider1,'Value')

set是用来设置一些的,set(handles.text2,'String','TEST')

handles

在callback里面的变量都是local的局部变量,如果想要在其他函数里面调用它,就要设置为整体变量,用到handles

handles.myData=a;

guidata(hobject,handles);(固定写法)

compile

输入deploytool

选定,然后点击package

影像

imread() imshow()

I=imread('pout.tif');%read

imshow(I);%show

imtool('pout.tif')

imadd():  K=imadd(I,J)

imhist(I):显示出频率

imrotate()旋转:J=imrotate(I,35,'bilinear') %I是原图 

imwrite(I,'pout2.png');       bmp,git,hdf,jpg。。。

数大米

策略:把米变成white,background变成black

threshold:检查每个picture,大于这个值就变成白色,否则就是黑色

graythresh():找出threshold

Im2bw:把一个graylevel变成binary

但是由于背景打光不均匀,导致背景前景误判,需要把背景去掉

 BG=imopen(I,strel('disk',15));

imshow(BG);

BG就是背景啦

然后I2=imsubtract(I,BG)

接下去数数

dfs式搜索,label,改0

这里的labeled就是 打好标签的矩阵,后面那个就是数字

colorful: RBG_label=label2rgb(labeled);

imshow(RBG_label)

多项式

f(x)=x^3-2x-5    p=[1 0 -2 -5]

polyavl:根据上面那个p生成真正的函数: f=polyval(p,x);  %p是函数,x是自变量

polyder():微分,返回来一个p型的东西,生成真正的需要polyval  polyval(polyder(p),7)

conv(),可以把两个进行卷积乘,就是合并

polyint:积分 polyint(p,3) 3是那个常数

diff() 求两个数之间差值 x=[1 2 5 2 1]; diff(x)  得到1 3 -3 1

          用来求非多项式斜率x=[1 2];y=[5 7]  slope=diff(y)./diff(x)

点除点除点除

 欣赏图标

XLim   YLim     FontSize     XTick        XTickLabel   FontName 

拟合

用矩形:h*f0   f0是取h/2的高度 用到sum

h=0.05;
x=0:h:2;
midpoint=(x(1:end-1)+x(2:end))./2;
y=4*midpoint.^3;
s=sum(h*y)

 

 运用梯形拟合,就是说高度使用函数的和的一半:trapz

辛普森函数

 好用的求积分:integral(函数,下限,上限)  函数必须是个handle

sym syms 宣告变量  syms x

solve 求根

diff() 求导

int() 求积分

fsolve()求根   fsolve(一个指针,initial guess)

fzero()  求根 用法与fsolve基本一致,但是只能求穿过坐标轴的零点(配合optimset)

roots()数值解  只对于多项式有效 roots([1 -3.5 2.75 2.125 -3.875 1.25])

syms x y
ep1=2-2*y-5
ep2=x+y-6
A=solve(ep1.ep2,x,y)

syms x
y=4*x^5
yprime=diff(y);

sums x;
y=...
z=int(y);%有个常数不知道呢
z=z-subs(z,x,0) %过z(0)=0


f2=@(x) (1.2*x+0.3+x*sin(x));
fsolve(f2,0)

f=@(x) x.^2
options=optimset('MaxITer',1e3,;TolFun',1e-10);%最大迭代次数   中止容差
fsolve(f,0.1,options)
fzero(f,0.1,options)

一些用到矩阵的计算

rref()  A*x=B A是系数矩阵,x是想要的答案  B是结果  要求x=rref([A b])

lu

我们要解决Ax=b  

尝试把A分成上三角和下三角的乘积 A=L^(-1)U 也就是说L,U已知

那么问题就变成了 Ax=b---->L^(-1)Ux=b

把Ux=Y

那么L^(-1)y=b  解出来y

然后Ux=y  解出来x

\    mldivide()  用于Ax=b   x=A\b

inv()逆矩阵

cond()   理解成用来判断一个矩阵健康状况的,有的时候行列式---》0,是不健康的  k越小越健康,因为A在很接近要平行于另一个向量的时候,它的改变会造成x巨大改变--》正无穷,所以k要变得更更大 

线性系统  

y=Ab

y是output  A是这个线性系统,研究数值进入这个A系统之后会发生的变化(也就是它的输出)

找到一个矩阵v,使得Av=b*v  b是一个实数

b决定了变换过后是放大还是缩小 v决定了方向

好,然后我要进行变化的变量(下图中就是b)可以进行拆分,成为vi*a求和

那么这个系统就变成了 ai b vi(这里的vi就是一维的,A由多个这些组合)

 

[v,d]=eig([2 -12;1 -5])

v就是得到的那个矩阵  d的对角线就是两个实数

统计

概率和变化(mean median mode)   (range variance std)

mean 平均值

median:中位数

mode :出现频率最高的

prctile:每一个percent的数值

max  min

std 方差

var 标准差

作图:bar  area  stem  (x,freqy)  x表示范围 freqy是一个数组,里面表示各个位置上数字出现的频率

boxplot():boxplot(数组名称)

skewness:<0左偏 >0右偏

线性回归

 

polyfit(x,y,n):用n次函数对x,y进行拟合,得到的fit(1)是一次项的系数,fit(2)是0次

然后就可以到的拟合后的y=kx+b

 如果是用高次去拟合的话

p=polyfit(x,y,i)  

yfit=polyval(p,xfit)

interp1():通过线段找点

spline

 

 让曲线更圆滑

interp2():适用于二维

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值