matlab操作与函数大全
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Matlab 操作与函数大全
**调试matlab
(1) 设置或清除断点:使用快捷键F12。
(2) 执行:使用快捷键F5。
(3) 单步执行:使用快捷键F10。
(4) step in:当遇见函数时,进入函数内部,使用快捷键F11。
(5) step out:执行流程跳出函数,使用快捷键Shift+F11。
(6) 观察变量或表达式的值:将鼠标放在要观察的变量上停留片刻,就会显示出变量的值,当矩阵太大时,只显示矩阵的维数。
1.常用矩阵生成:
a) A = eye(5); 生成一个五阶单位矩阵。
b) A = ones(size(X)); 生成一个与X规格相同的全是1的矩阵。
c) A = zeros(size(X)); 生成一个与X规格相同的全是0的矩阵。
2.初始化:clear; close all; clc;
a)clear; 清空工作区与全局变量。
b)close all; 关闭所有窗口。
c)clc; 清空命令区域。
3.Matlab中的函数:常常单独写在一个.m文件中,与主文件在一个文件夹下。
形式:
function [J, grad] = CostFunction(theta, X, y, lambda)
…
J = …
grad = …
end
☆CostFunction是这个函数的名字;
theta,X, y, lambda都是传入函数的变量;
J和grad是函数的返回值,在函数中要对他们赋值。
4.data = load(‘a.txt’); 将a.txt里面的数据存入矩阵data中。
5.矩阵取数:
a)X = data(: , 1); 从data矩阵中取第一列,赋给向量X;
b)X = data(:, [1, 2]); 从data矩阵中取1,2列,赋值给X;
6.m = length(y); 取一个向量的长度。
7.size函数:
a)size(X, 1); 取矩阵X的行数。
b)size(X, 2); 取矩阵X的列数。
c)[m n] = size(X); 取矩阵的行数和列数,分别存在m,n中。
8.plot函数:
a)plot(x) 当x 为一向量时,以x 元素的值为纵坐标,x 的序号为横坐标值绘制曲线。
当x 为一实矩阵时,则以其序号为横坐标,按列绘制每列元素值相对于其序号的
曲线,当x 为m× n 矩阵时,就由n 条曲线。
b)plot(x, y) 以x 元素为横坐标值,y 元素为纵坐标值绘制曲线。
c)plot(x, y1, x, y2,…) 以公共的x 元素为横坐标值,以y1,y2,… 元素为纵坐标值绘制
多条曲线。
d) e.g. plot(X,Y,'LineWidth',2,'Color',[0.6 0 0]); 以宽为2的、暗红色的线画图。
e) e.g. plot(x, y, 'rx', 'Markersize', 10);
i.‘rx’指的是red+x,在坐标上画出红色的叉叉。
ii.Markersize是用来标记的符号(点、叉等)的大小。
9.theta = zeros(2, 1); 产生一个2*1的全是0的矩阵。
10.X = [ones(m, 1), data(:,1)]; 给X矩阵加一列。(直接用两列合并成一个矩阵)。
11.for 循环:
e.g.
for i = Begin: Step: End %其中step若不填则默认为1
具体的编程内容
end
12..*和./和.^: 矩阵元素一一相乘除、乘方。
13.sum:
a)sum(A): 对A向量的所有元素求和。
14.find函数:返回符合要求的元素的所在位置,存在新的矩阵中。
a)X = find(A); 返回矩阵A中非零元素所在位置,存在向量X中。
>> A = [1 0 4 -3 0 0 0 8 6];
>> X = find(A)
结果:
X =
1 3 4 8 9
b)pos = find(y==1); 在y向量中找y=1的,将其位置存在pos向量中。
c)(接上) plot(X(pos, 1), X(pos, 2)); 将X矩阵中对应y=1的参数,以第1列为x轴,
第二列为y轴画出来。注意,pos是一个向量,X也是一个向量。这样写的意思是,
将X向量中这些位置的向量提取、再画出来。
15.对数和指数
a)指数函数:e^x表示为:exp(x); 其中若x为矩阵,则是矩阵中每一个数都取一个
指数。
b)对数函数:ln(x)表示为:log(x); 若想以10为底,则用log10(x);
16.输出语句:fprintf(['…']);
17.If语句:(end后面不用加分号)
a)if … elseif … else … end
b)if … else … end
c)if … end
18.使用fminunc: 最小化一个目标函数。
options = optimset('GradObj', 'on', 'MaxIter', 400);
% 'GradObj','on': 用户自己定义函数的梯度。
% 'MaxIter', 400:允许的最大迭代次数为400
[theta, cost] = fminunc(@costFunction(…), initialTheta, options);
%costFunction(…)是自己写的,提供对应参数下的代价值,目标就是将它最小
化。(参数就相当于提供给代价函数的变量,比如theta。)在这里,costFunction
需要返回[J, grad], J是计算出的代价值,grad是由我们自己计算出的梯度。