前置安装

octave

introduction

clear; close all; clc刷新清空octave

如果写程序后缀名.m

help commandname帮助

;用法同c++

%注释

不再命令行而是直接编代码时,每句结尾; (在命令行用的话可以避免输出不必要的信息)

~=不等于

次方是^不是**

异或是xor(a,b)

e, pi, i都有定义

sin, cos, tan, log, exp, abs, floor, ceil

log是\(e\)为底

printf, sprintf用法大致同c++, 不过sprintf最开头的目标变量参数去掉了变成返回值了

disp(x)显示值

没有//,且/默认可以是小数

pause等待输入

...放行末,将语句分几行写

变量

who显示当前已有变量, whos还能额外显示每个变量的size,bytes,数据类型

clear xxx删除变量

矩阵

定义:

A=[1,2,3;1,2,3;1,2,3]分号换行

访问:

A(1, 2)第一行第二列(可修改)

A(1, :)第一行整行 (类似numpy)

A(:, 2)整个第二列

vec(3:end)获得向量第三个元素到最后一个元素

一些构造函数:

1:5等价于[1, 2, 3, 4, 5]

1:2:5等于1 3 5(中间那个是步长)

zeros(n,m)nm的全零矩阵

ones(n,m) n
m的全一矩阵

A=eye(n)n*n单位矩阵

rand(n,m), randn(n,m)随机矩阵,rand是0到1随机小数,randn按均值为0方差为1的正态分布

A=zeros(size(B))构造相同大小的矩阵

可以A=[]开个不定大小的的矩阵,然后用[A, [1, 2]]这种来进而确定大小

也可用A(:,id)=[]删掉矩阵某一列

一些矩阵运算:

取逆inv(A) (如果sigular,那么pinv可以求伪逆)

转置A'

A.*B矩阵对应位乘

A.^B对应位的变为a^b

还有2.^AA.^2, exp(A), log(A), max(A, 2), A>2等也是每个位操作将运算结果换上去

其他函数

A=[A;B]把列数相同的矩阵B插入到A矩阵下面

A=[A,B]把行数相同的矩阵B插入到A矩阵右边

length(A)获得向量长度

size(A)返回二元组(几行,几列)(size(A, 1/2)分别是获取二元组的第1第2个值)

max(A): 当\(A\)为行/列向量时,求最大值。 而当\(A\)为矩阵时,会默认得到一个对应每列最大值的行向量。

当对向量操作时,[val, ind] = max(A)可以额外获得下标

max(A,[],1或2)则不管你是否向量,1是求每列最大值的行向量, 2是求每行最大值的列向量

sum(A, 1或2)1是每列和摆成行向量,2是每行和摆成列向量

要求整个矩阵最大值或整个矩阵的和的话max(max(A)), sum(sum(A))

prod乘法同理

对向量find(A>3)找出满足条件的下标,对矩阵[r,c]=find(A>3)找到满足条件的下标

mean求平均数

std求标准差

A(:)是一种矩阵转向量的问题,可用于简化上述求整个矩阵的和,乘积,最大值

绘图

x=[-2:0.01:2]; %定义域(取点频率是每0.01一个)
y=x.^2; %函数
plot(x, y); %绘出图像(是将相邻的点用直线连起来的)
print -dpng "foo.png"; %dpng djpg ... 将最近一次plot保存为文件,会保存到源文件所在目录(命令行弄了一下不行?)

xlable("name"),ylabel("name")设置坐标轴变量名称

axis([xa,xb, ya, yb])设置坐标系显示范围(注意这并不回改变你函数的定义域,只是类似于你换了个观察角度而已)

title("name")图标上方名称

legend("name1", "name2")按照图上曲线创建顺序标上图示(右上角显示红线时name1,蓝线是name2这种)

cloes关闭当前figure

默认创建的临时窗口写着Figure 1。 可用figure(number)来控制打开叫什么名字的临时窗口,以便同时作画多张图片

subplot(n,m,idx)是把当前figure平均分成\(n*m\)的网格状后,从上往下一行一行从左往右数的第idx个网格处放置一个网格大小的坐标系占位置

然后之后的画图就会画在那里,直到你切换subplot

切换subplot不会覆盖原来在那的坐标系,也不会重置hold off

用不同划分方式的subplot往空白的地方放可以使一个figure上有不同大小的坐标系

但如果不同划分方式的subplot与之前放过的subplot有重合,就会把之前的那个铲掉

hold on函数使新函数不覆盖旧函数 hold off取消.

hold on作用区域是局部的, 具体是作用于subplot(一个figure看作1*1的subplot)

当你没有打开figure时,回帮你开个figure1并帮你设置它为hold on。

这样写在最靠外不代表什么全局设置之类的,你figure(2)这样2是没有hold on的

当你的subplot被新建时,默认时hold off的(从刚打开的空白一片连坐标系都没有的figure中开subplot也是如此)

当figure关闭后再打开,相当于新建subplot,默认hold off

作图实虚线,颜色,空心圆等符号,参考

hist(A)将向量A中的数字统计出现次数并绘成直方图一个数值的柱的右边界是那个数值,而不是柱子中间对着数值。所以显得比较奇怪

hist(A,w)后面那个参数越大,柱就越细

矩阵转灰度图imagesc(A), colorbar, colormap grey

与外界联动

load('filename')里面的东西得是像矩阵这种合法的格式

如果这样写load("a.txt")默认会去掉后缀把文件名作为新的变量名存起来,这可能会覆盖掉a原有的变量值

可以这样b=load("a.txt")指定存储位置,不会覆盖a

save file variable可以将某个变量存进去

save file则是把所有变量存进去

以后可以load file这时载入的变量名与原来保存时相同

注意这里不要用b=load("a.txt"),否则首先b存多个变量不知道怎么访问,其次这样子b是只读的

条件语句,循环

for i = 1:10,while i<10没有冒号

注意上面那句话本质就是for i = vector

最后要用end;收尾

if , else不用冒号

elseif中间没有空格

最后要用end;收尾

function

function f()无返回值不用写返回值,无参数参入可以不写括号

function res = f(arg-list) 单返回值型 (相当于res是函数里的临时变量)

function [res1, res2] = f(arg-list) 并不是真的返回list

不能写成A=f(...)这样A只能得到res1,必须写成[a, b] = f(...)

end

可以另写文件,一个.m文件存一个函数,如果文件名不等于函数名,则函数名会变成文件名,但这样会warning

也就是说建议文件名和函数名一样吧。

这样使用函数需要cd到.m文件的目录,或者打addpath("directory")

关于矩阵乘法的思考

向量对应乘求和的两种方式:\(u'*v\)与\(sum(u.*v)\)

单组数据是 A列向量 时,多组数据就一列一列排起来,结果也对应是按原来结果的格式一列一列排起来

但组数据时 行向量
A 时,多组数据就一行一行拍起来,结果也对应是按原来结果的格式一行一行排起来

octave学习的更多相关文章

  1. Coursera在线学习---第二节.Octave学习

    1)两个矩阵相乘 A*B 2)两个矩阵元素位相乘(A.B矩阵中对应位置的元素相乘) A.*B 3)矩阵A的元素进行平方 A.^2 4)向量或矩阵中的元素求倒数 1./V    或   1./A 5) ...

  2. Machine Learning – 第2周(Linear Regression with Multiple Variables、Octave/Matlab Tutorial)

    Machine Learning – Coursera Octave for Microsoft Windows GNU Octave官网 GNU Octave帮助文档 (有900页的pdf版本) O ...

  3. Window下设置Octave

    从 http://sourceforge.net/projects/octave/files/Octave_Windows%20-%20MinGW/Octave%203.6.0%20for%20Win ...

  4. 【Machine Learning 学习笔记】OSX Octave 输出图像问题

    Uninstall any existing gnuplot on your OSX brew uninstall gnuplot Install gnuplot with either X or X ...

  5. Linux学习内容

    Linux学习要点(转载自红联) 一.学习Linux的基本要求1. 掌握至少50个以上的常用命令. 2. 熟悉Gnome/KDE等X-windows桌面环境操作 . 3. 掌握.tgz..rpm等软件 ...

  6. Andrew N.G的机器学习公开课学习笔记(一):机器学习的动机与应用

    机器学习由对于人工智能的研究而来,是一个综合性和应用性学科,可以用来解决计算机视觉/生物学/机器人和日常语言等各个领域的问题,机器学习的目的是让计算机具有像人类的学习能力,这样做是因为我们发现,计算机 ...

  7. GitHub 上 57 款最流行的开源深度学习项目

    转载:https://www.oschina.net/news/79500/57-most-popular-deep-learning-project-at-github GitHub 上 57 款最 ...

  8. Linux的学习路线图

    一.学习Linux的基本要求1. 掌握至少50个以上的常用命令. 2. 熟悉Gnome/KDE等X-windows桌面环境操作 . 3. 掌握.tgz..rpm等软件包的常用安装方法 4. 学习添加外 ...

  9. Stanford机器学习---第五讲. 神经网络的学习 Neural Networks learning

    原文 http://blog.csdn.net/abcjennifer/article/details/7758797 本栏目(Machine learning)包括单参数的线性回归.多参数的线性回归 ...

随机推荐

  1. Oracle 函数 之 Coalesce()、greatest()、least()

    Coalesce().greatest().least() oracle比较一列的数据大小时,我们一般使用max()/min()函数,比较一行的最大值或者最小值时,使用函数Coalesce()/gre ...

  2. Java - 静态方法不具有多态性

    class A1 { public static void f() {  System.out.println("A1.f()"); }}class A2 extends A1 { ...

  3. mysql update 多表关联更新

    UPDATE new_schedules_spider_static_schedule s join new_scac_port p on p.`PORT` = s.`PORT` and p.SCAC ...

  4. python3 练习题100例 (十五)

    这个比较难,主要难在考虑的问题太多,有好几个还没写出来.有空再来改进.请高手指教! #!/usr/bin/env python3 # -*- coding: utf-8 -*- __author__ ...

  5. Python9-From-CSS-day48

    1.form表单相关内容前后端有数据交互的时候用form表单form表单提交数据的几个注意事项: 1.所有获取用户输入的标签都必须放在form表单里面 2.action 控制着往哪里提交 3.inpu ...

  6. while循环中continue和break的区别

    除了满足while条件外,还有两种方法可以终止循环,它们分别是break和continue.它们唯一的区别是break跳出整个循环,直接执行下面的代码了;而continue是终止当次循环,不执行下面的 ...

  7. IIC简介(转载)

    来自:https://www.cnblogs.com/zalebool/p/4214599.html IIC简介: IIC 即Inter-Integrated Circuit(集成电路总线),这种总线 ...

  8. 51NOD:1639-绑鞋带

    传送门:https://www.51nod.com/onlineJudge/submitDetail.html#!judgeId=475129 1639 绑鞋带 基准时间限制:1 秒 空间限制:131 ...

  9. 动态规划:HDU3496-Watch The Movie(二维费用的背包问题)

    Watch The Movie Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others) ...

  10. 关于mybatis 一级缓存引发的问题

    场景: 由于在一个方法中存在多个不同业务操作 private void insertOrUpdateField(CompanyReport entity) { //计算并数据 calcReportDa ...