Octave教程五:控制语句if/while/for以及函数的定义和使用
来源:互联网 发布:python执行shell文件 编辑:程序博客网 时间:2024/06/16 10:09
Octave教程五:控制语句if/while/for以及函数的定义和使用
在这篇文章中,我将告诉你该怎样为你的Octave程序写控制语句,诸如if/while/for这些语句,以及如何定义和使用方程。
>> for i = 1:10,> v(i) = 2^i;> end;>> vv = 2 4 8 16 32 64 128 256 512 1024>> indices = 1:10;>> indicesindices = 1 2 3 4 5 6 7 8 9 10>> for i = indices,> disp(i);> end; 1 2 3 4 5 6 7 8 9 10>> a = 1:10;>> aa = 1 2 3 4 5 6 7 8 9 10>> vv = 2 4 8 16 32 64 128 256 512 1024>> VV = 0 0 0 0 0 0 0 0 0 0>> v = v'v = 2 4 8 16 32 64 128 256 512 1024>> i = 1;>> while i <= 5,> v(i) = 100;> i = i + 1;> end;>> vv = 100 100 100 100 100 64 128 256 512 1024>> i = 1;>> while true,> v(i) = 999;> i ++;> if i == 6,> break;> end;> end;>> vv = 999 999 999 999 999 64 128 256 512 1024>> v(1)ans = 999>> v(1) = 2;>> if v(1) == 1,> disp('the value is one');> elseif v(1) == 2,> disp('the value is two');> else> disp('the value is not one or two');> end;the value is two>>
现在我们来说如何在Octave里定义函数:
这个文件只有三行,第一行写着function y = squareThisNumber(x),这就告诉octave,我想返回一个值,并且这个返回的值,我想放在变量y中;另外,它告诉了octave这个函数有一个参数,就是参数x,还有定义的函数体,也就是y等于x的平方。
现在让我们尝试调用这个函数。
>> squareThisNumber(5)error: 'squareThisNumber' undefined near line 1 column 1>>
出错:这个函数未被定义
这是因为octave不知道在哪里找这个函数
>> pwdans = C:\fakepath\octave4>> cd 'D:\soft\Octave\user'>> squareThisNumber(5)parse error near line 1 of file D:\soft\Octave\user\squareThisNumber.m syntax error>>> ^
出错,修改SquareThisNumber.m文件,如下所示:
此时,程序便可正常运行:
>> SquareThisNumber(5)ans = 25>> SquareThisNumber(5)ans = 25>> SquareThisNumber(8)ans = 64>>
>> % Octave search path (advanced/optional)>> addpath ('C:\fakepath\octave4')>> SquareThisNumber(5)ans = 25>> pwdans = D:\soft\Octave\user>> addpath ('D:\soft\Octave\user')>> cd 'C:\'>> SquareThisNumber(5)ans = 25>> cd>> pwdans = C:\Users\huyang>>
我们再来看另外一种情况:
我们在D:/soft/Octave/user目录下创建squareAddCubeThisNumber.m文件,内容为:
>>>> [a,b] = squareAddCubeThisNumber(5)a = 25b = 125>>
>> [a,b] = squareAddCubeThisNumber(5);>> aa = 25>> bb = 125>>
接下来,我想设计一个复杂一点的函数:
比方说,我有一个数据集,像这样,数据点为[1,1],[2,2],[3,3]
我想做的事是定义一个octave函数来计算代价函数J(θ),就是计算不同θ值所对应的代价函数值J。
首先让我们把数据放在octave里,如下所示:
>> X = [1 1;1 2;1 3]X = 1 1 1 2 1 3>> Y = [1;2;3]Y = 1 2 3>> theta = [0;1];>>
接下来,我定义一个costFunctionJ.m函数,如下图所示:
源代码如下:
function J = costFunctionJ(X,Y,theta) %X is the "design matrix" containing our training examples %Y is the class labels m = size(X,1); %number of training examples predictions = X * theta; %predictions of hypothesis on all m examples sqrErrors = (predictions - Y) .^ 2; % squared errors J = 1/(2*m) * sum(sqrErrors);
接下来,我们写如下代码:
>> P = Y .^ 2P = 1 4 9>> sum(P)ans = 14>> J = costFunctionJ(X,Y,theta)J = 0>>
屏幕输出J = 0,这是因为,如果我的数据集x为[1;2;3],y也为[1;2;3],然后设置θ0为0,θ1 = 1,这就恰好是45°的斜线,这条线是可以完美拟合我的数据集的;而相反地,如果我设置θ = [0;0],那么这个假设所计算出的J就如下图所示:
>>>> theta = [0;0]theta = 0 0>> J = costFunctionJ(X,Y,theta)J = 2.3333>>
>>>> (1^2 + 2^2 + 3^2) / (2 * 3)ans = 2.3333>>
- Octave教程五:控制语句if/while/for以及函数的定义和使用
- sql server 函数,存储过程,游标以及while和if语句的嵌套使用
- Python的控制语句,(if,while,for)之if
- 编写函数求两个整数 a 和 b 之间的较大值。要求不能使用if, while, switch, for, ?: 以及任何的比较语句
- 编写函数求两个整数 a 和 b 之间的较大值。要求不能使用if, while, switch, for, ?: 以及任何的比较语句
- 【Swift】学习笔记(五)——控制语句(if,switch,for-in,for,while,do-while)
- SHELLcase流程控制和for、while循环语句的使用
- 选择 | 循环 | 语句(if,if……else,switch,while,for)的理解和使用
- awk 控制语句(if for do while)
- Oracle控制语句(if , loop , while , for)
- Oracle控制语句(if , loop , while , for)
- Oracle控制语句(if , loop , while , for)
- python控制流语句-while,for,if
- Oracle控制语句(if , loop , while , for)
- Oracle控制语句(if , loop , while , for)
- Python基础语法(2)——字典、函数定义使用、控制流(if&for&while)
- 存储过程if,for,while语句,数组和游标使用
- swift控制语句,for,while,repeat-while,if,switch
- hibernate框架搭建
- 听力高分秘诀---英语四六级考前必看
- Service如何弹出dialog
- 剑指offer ---数组中的逆序对
- Hibernate in Action.pdf 英文原版 免费下载
- Octave教程五:控制语句if/while/for以及函数的定义和使用
- FAQ(4):javaee使用mybatis,org.apache.ibatis.io.Resources报错
- Bailian2719 陶陶摘苹果【序列处理】(POJ NOI0106-02, vijos P1102)
- 【PAT B1001】害死人不偿命的(3n+1猜想)
- JavaFX之RadioButton (2)
- 二分查找
- 【ML】VC dimension
- vc++中的import的使用
- spark算子运算