1.
clear:清除工作空间的所有变量
clear all:清除工作空间的所有变量,函数,和MEX文件
2.
y = linspace(
生成 x1,x2
,n
)n
个点,起点是x1,终点是x2。
3.
plot属性:
LineWidth——指定线宽
MarkerEdgeColor——指定标识符的边缘颜色
MarkerFaceColor——指定标识符填充颜色
MarkerSize——指定标识符的大小
x=linspace(-10,10,20)
y=x
plot(x,y,'r*','markersize',10,'linewidth',20) % 在图上画*,颜色为红色,标记的大小(markersize)为10,线条的宽度为20
xlabel('x')
ylabel('y')
4.
pause:
一般情况下pause(a)表示程序暂停a秒后继续执行,但有时候也存在这种情况,程序中只有pause;并没有参数a,这样的意思是程序暂停,按任意键程序继续执行。
5.
mesh,surf :
绘制曲面:z=e^(-x^2-y^2)
clc;clear;close all;
[X,Y]=meshgrid(-2:0.1:2,-2:0.1:2);
Z=exp(-X.^2-Y.^2);
mesh(X,Y,Z);%线框图
figure();
surf(X,Y,Z);%表面图
6.
logspace(a,b,n):
生成从10的a次方到10的b次方之间按对数等分的n个元素的行向量
7.
hold on;
加上这句就可以在原图上一直画图了。
8.
n = numel(A)
返回A里面的元素个数
9.
p = randperm(n)
返回一行包含从1到n的整数。
randperm(3): [1 3 2]
10.
exist:
exist主要有两种形式,一个参数和两个参数的,作用都是用于确定某值是否存在:
①. b = exist( a)
若 a 存在,则 b = 1; 否则 b = 0;
②. b = exist( 'name', 'kind')
kind 表示 name 的类型,可以取的值为:builtin(内建类型),class(类),dir(文件夹),file(文件或文件夹),var(变量)。
11.
句柄
变量名=@(输入参数列表)运算表达式
① 可以定义一个函数
mysqr=@(x)x.*x
mysqr(2) % 结果ans = 4
② @+函数名 进行函数名的赋值
function y=f(x)
y=cos(x);
则可以定义mycos = @f 来调用已定义函数。
并通过 mycos(pi)来使用该函数。
返回 ans = -1
12.
fminunc
返回f(x)取到最小值所对应的x,f(x)值,收敛性
运用到ml里面的代码:
options = optimset('GradObj', 'on', 'MaxIter', 400); % 设置使用用户自定义的梯度下降公式 ,迭代次数:400
% 为了使得代价函数取最小,采用梯度下降法迭代400次,学习率不用人为设定,函数内部自动探索。
其中设定t为自变量,函数为costFunctionReg,X,y,lambda延用上面的变量, initial_theta:θ的初始值(这里就是t的初始值),costFunctionReg返回 迭代一次所得到的代价函数值以及代价函数对θj的偏导,exit_flag>0表示收敛,theta为最终的theta,J为该theta对应的值
[theta, J, exit_flag] = fminunc(@(t)(costFunctionReg(t, X, y, lambda)), initial_theta, options);
13.
max
max(A)
返回一个数组各不同维中的最大元素。
如果A是一个向量,max(A)返回A中的最大元素。
如果A是一个矩阵,返回每一列的最大元素,构成一个行向量形式。若[Y,U]=max(A) ,则Y是前面的意思,而U是最大值所对应的索引值(行号),U的第一个元素对应A的第一列
14.
a(:)
a=magic(3)
a=
8 1 6
3 5 7
4 9 2
a(:) :
ans=
8
3
4
1
5
9
6
7
2
先数第一列,再数第二列。。。。。
15.
[1,2] = [1 2]
16.
rand(3,1) :
生成一个3*1的矩阵,里面的元素是[0,1]的随机数。
17.
cell
定义2*2的cell数组:A={'I love you',pi;{1,11},complex(3,5)}
>> A(2,1) % 返回在2,1位置上的元胞
ans =
{1x2 cell}
>> A{2,1} % 返回在2,1位置上的元胞的内容
ans =
[1] [11]
18
strtok
①strtok(str) % 从第一个不是空格的字符开始,一直选到遇到下一个空格为止
a=' asd eere dw ';
strtok(a) % 返回asd
②a=' a dwdw ! dw ddda ! awd,..';
strtok(a,'!') % 返回第一个!之前的所有字符
③[b,c]=strtok(a,'!') % b存储真正的结果,c存储a中去掉b以后剩下的字符
19
regexprep
newStr = regexprep(str,expression,replace) % expression:正则表达式,此处将 str 中与 expression 匹配的文本替换为 replace 描述的文本。regexprep 函数在 newStr 中返回更新的文本。
str = 'My flowers may bloom in May'; expression = 'M(\w+)y'; % \w 匹配字母或数字或下划线或汉字 等价于 '[^A-Za-z0-9_]'。+:匹配前面的表达式1次或多次 replace = 'April'; newStr = regexprep(str,expression,replace) % str中若出现以M为首y为尾,中间有1个以上的任意字符,则把这一子串替换为replace,返回更新后的字符串
21.
B = repmat(A,M,N)
生成一个新矩阵,把A看成一个元素,形成m行n列的。
22.
bsxfun(fun,A,B):使用fun对A和B的每个元素进行操作。
如果发现A,B维数一直,则直接一对一搞;否则必须有一个维数为1,然后对它进行扩展,接着利用fun对两个矩阵的每个元素进行运算。
23.
基本运算函数(rdivide(a,b) : a/b ; ldivide(a,b):b/a,这些可以代替基本函数):
24.
diag
①X = diag(v,k)
v为向量,X为矩阵
以向量v的元素作为矩阵X的第k条对角线元素,当k=0时,v为X的主对角线;当k>0时,v为上方第k条对角线;当k<0时,v为下方第k条对角线。
例:
>> v=[1 2 3];
>> x=diag(v,-1)
x =
0 0 0 0
1 0 0 0
0 2 0 0
0 0 3 0
②v=diag(X,k)
X为矩阵,v为向量
取矩阵X的第K条对角线元素为向量v
例:
>> aa=randn(3,3)
aa =
-1.3282 -1.7925 0.4092
-0.3803 0.5858 -0.4684
-0.9560 0.7356 0.8292
>> diag(aa)
ans =
-1.3282
0.5858
0.8292
>> diag(aa,1)
ans =
-1.7925
-0.4684
>> diag(aa,2)
ans =
0.4092
优化:
fmincon:
x0是初始值
例题:
没有Aeq,Beq就用[],exitFlag=1表示找到最优值
如果多了个非线性约束:
则多定义一个函数: