octave学习
杂
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) nm的全一矩阵
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.^A,A.^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学习的更多相关文章
- Coursera在线学习---第二节.Octave学习
1)两个矩阵相乘 A*B 2)两个矩阵元素位相乘(A.B矩阵中对应位置的元素相乘) A.*B 3)矩阵A的元素进行平方 A.^2 4)向量或矩阵中的元素求倒数 1./V 或 1./A 5) ...
- 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 ...
- Window下设置Octave
从 http://sourceforge.net/projects/octave/files/Octave_Windows%20-%20MinGW/Octave%203.6.0%20for%20Win ...
- 【Machine Learning 学习笔记】OSX Octave 输出图像问题
Uninstall any existing gnuplot on your OSX brew uninstall gnuplot Install gnuplot with either X or X ...
- Linux学习内容
Linux学习要点(转载自红联) 一.学习Linux的基本要求1. 掌握至少50个以上的常用命令. 2. 熟悉Gnome/KDE等X-windows桌面环境操作 . 3. 掌握.tgz..rpm等软件 ...
- Andrew N.G的机器学习公开课学习笔记(一):机器学习的动机与应用
机器学习由对于人工智能的研究而来,是一个综合性和应用性学科,可以用来解决计算机视觉/生物学/机器人和日常语言等各个领域的问题,机器学习的目的是让计算机具有像人类的学习能力,这样做是因为我们发现,计算机 ...
- GitHub 上 57 款最流行的开源深度学习项目
转载:https://www.oschina.net/news/79500/57-most-popular-deep-learning-project-at-github GitHub 上 57 款最 ...
- Linux的学习路线图
一.学习Linux的基本要求1. 掌握至少50个以上的常用命令. 2. 熟悉Gnome/KDE等X-windows桌面环境操作 . 3. 掌握.tgz..rpm等软件包的常用安装方法 4. 学习添加外 ...
- Stanford机器学习---第五讲. 神经网络的学习 Neural Networks learning
原文 http://blog.csdn.net/abcjennifer/article/details/7758797 本栏目(Machine learning)包括单参数的线性回归.多参数的线性回归 ...
随机推荐
- 关于java中异常机制
什么是异常:异常就是程序在运行时出现的不正常情况.对于严重的情况Java通过Error类进行描述,一般不用编写代码处理:对于不严重的情况Java通过Exception描述,一般编写针对性代码对其进行处 ...
- HTML <input> 标签如何屏蔽浏览器的自动填写?
autocomplete = "off",实测无效. <input type="text" autocomplete = "off"/ ...
- 5- vue django restful framework 打造生鲜超市 -完成商品列表页(上)
使用Python3.6与Django2.0.2(Django-rest-framework)以及前端vue开发的前后端分离的商城网站 项目支持支付宝支付(暂不支持微信支付),支持手机短信验证码注册, ...
- tcl之基本语法—1
- du 与df 统计系统磁盘不一致原因与解决方法
事件起因: 同事发现云主机磁盘系统盘满了,准备清理系统盘,便利用du 命令统计了根目录下各文件夹的大小,发现统计的各文件夹的大小总和 加起来比 df 命令查看到的系统盘所使用空间 要小很多.这里记录下 ...
- Patrick and Shopping
Patrick and Shopping 今天 Patrick 等待着他的朋友 Spongebob 来他家玩.为了迎接 Spongebob,Patrick 需要去他家附近的两家商店 买一些吃的.他家 ...
- 笔记-算法-KMP算法
笔记-算法-KMP算法 1. KMP算法 KMP算法是一种改进的字符串匹配算法,KMP算法的关键是利用匹配失败后的信息,尽量减少模式串与主串的匹配次数以达到快速匹配的目的.具体实现就是实现一 ...
- SQLite学习和使用
创建数据库并创建表格 1.创建MyDatabaseHelper继承于SQLiteOpenHelper(抽象类,必须实现onCreate()和onUpgrade()方法)2.把数据库建表指令弄成一个字符 ...
- Java的内存回收
一.java引用的种类 1.对象在内存中的状态 可达状态:当一个对象被创建后,有一个以上的引用变量指向它. 可恢复状态: 不可达状态:当对象的所有关联被切断,且系统调用所有对象的finalize方法依 ...
- Maya
建立酒杯的方法(CV曲线) surface(曲面)-- creat cv curve tool-- control vertex(调整图形)[再次creat cv建立厚度,只需要建立酒杯的上口]--- ...