吴恩达机器学习——matlab控制语句学习
zeros()
zero(num1,num2)绘制一个num1×num2的矩阵,这个矩阵每个元素的值都为0
For循环
实例:
v = 1:1:10
for i = 1:10
v(i) = i^(2);
end
运行结果:
for i = 1:10
等于C语言中的for(int i=1;i<=10;i++)
End语句表示for循环的结束
indices = 1:10;
给indices赋值为1到10
for i = indices,
disp(i);
end;
依次遍历indices的值,然后用disp(i)函数,输出i的值。
while
i = 1;
while i<= 5;
v(i) = 100;
i = i+1;
end;
设置i=1,当i小于等于5时,设置数组v(i)的值为100,i自增1。当while条件不满足时,结束循环。
运行结果
i = 1;
while true, i =i+1;
if i==10,break;
end;
end;
设置变量i=1,while true,(判断永远为真),i自增。
if语句,如果i等于10,break语句可以结束循环。
第一个end结束的是if语句,第二个end结束的是while语句。
运行结果:
i在不断执行的过程中,不断自增,直到满足if的判断条件,执行if语句的break.
If——else语句
if i==1,
disp("the number is one");
elseif i==2,
disp("the number is two");
else disp("it is not one or two");
end;
运行结果:
这是一个选择语句,逗号表示未结束,可以分成三段进行看。
第一段是当i等于1时,控制器将会打印出Are you joking?(注意判断语句即i==1后面是个逗号)
第二段是当i等于2时(不满足第一条,即当i等于1则会进行第二条的判断)
当以上两个都不满足时,执行disp("it is not one or two");
编写函数
编写函数时,要单独创建.m文件,同时如果你使用的是windows系统的话,建议不要用记事本打开.m文件,建议使用写字板打开,因为记事本可能会导致奇怪的间距。
创建函数:
实例:
Function name(返回的参数) = 函数名(参数)
执行内容
如:
Function y = squareThisNumberr(x)
Y = x^2;
点击new进行创建.m文件,保存然后命令以后,开始编写函数,函数名要和文件名一致。
引用创建的函数:
当你创建的好函数以后,通过调用函数名,然后传递参数的值就可以进行运算,返回的结果就是运算的结果。
如上,就是我调用我自己编写的test()函数后的结果。
如果当你引用函数,软件报错,这说明软件并不知道文件所在的目录,有以下两种解决办法:
1、可以通过cd把当前目录转换都文件所在的目录。
2、addpath(路径);通过这个方法,添加该路径到软件的搜索路径,则在调用函数时,软件会到这个路径进行搜索。
返回的值的问题,matlab运行你定义的变量返回多个值:
比如下面这个实例:
function [y1,y2] = test(x)
y1 = x^2;
y2 = x^3;
这个实例就定义了一个函数,返回了y1和y2两个值。
在运行这个函数的时候,要设定相同个数的变量去接收返回的值。(如下图所示)
如果只有一个变量去接收结果呢?
如上所示共三种情况:
(1)[,b] = test(9),按照变量对应的函数的返回结果所规定的运算方法,b返回的是y2运算结果的值
(2)[a,] = test(2)得到的是y1的值
(3)如果只设置一个变量,则会得到的是第一个y1的值,即第一个位置的结果。
自定义一个代价函数:
function J = test(X,y,theta)
m = size(X,1);
predictions = X*theta;
sqrErrors = (predictions -y).^2;
J = 1/(2*m)*sum(sqrErrors);
依次可以看出,m为样本个数,即x的行数
SqrErrors则为方差