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)包括单参数的线性回归.多参数的线性回归 ...
随机推荐
- Oracle 配置文件目录
Oracle 配置文件目录 ① 在oracle安装目录下,找D:\oracle\product\10.2.0\client_1\NETWORK\ADMIN中的tnsnames.ora文件,找到之后,配 ...
- git与github账号建立SSH连接
第1步:创建SSH Key.在用户主目录下,(就是在你的工作空间一层)看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa和id_rsa.pub这两个文件,如果已经有了,可直接跳到下一步 ...
- 2018.11.5 Nescafe26 T1 小猫爬山
题目 题目描述 Freda 和 rainbow 饲养了 N 只小猫,这天,小猫们要去爬山.经历了千辛万苦,小猫们 终于爬上了山顶,但是疲倦的它们再也不想徒步走下山了(呜咕>_<). Fre ...
- python虚拟环境 virtualenv工具
为了隔离各类环境,保证环境间不冲突,python中存在虚拟环境,可以在一个文件夹里生成相应的环境,防止与python自带环境冲突 首先我们下载virtualenv,若你未安装python,应到pyth ...
- Linux-WebServer安装和配置
Apache 基本操作 解释 命令 安装 yum install httpd 启动 service httpd start 停止 service httpd stop 启动完成后 查看进程是否存在:p ...
- WebUploader压缩图片上传
WebUploader,由Baidu FEX 团队开发,以H5为主,FLASH为辅,兼容 IE6+,iOS 6+, android 4+,采用大文件分片并发上传,极大的提高了文件上传效率,看了官方文档 ...
- thinkphp 3.2.3 - Dispatcher.class.php 解析(转发器)
class Dispatcher { public static function dispatch() { $varPath = C('VAR_PATHINFO'); // 's' $varAddo ...
- [转载]本地配置的 *.dev,*.app域名 在谷歌浏览器中总是自动转跳到https上,导致不能访问?
本地开发环境 .dev 不正常,找到文章mark一下 转自:https://segmentfault.com/q/1010000012339191
- Python学习笔记(六)测试开发之接口开发
Python的接口开发要使用到flask.Flask(__name__) 下面是一个简单的接口实例程序及访问效果: import flaskserver = flask.Flask(__name__) ...
- [Noip2016]换教室(期望+DP)
Description 题目链接:Luogu Solution 这题结合了DP和概率与期望,其实只要稍微知道什么是期望就可以了, 状态的构造很关键,\(F[i][j][0/1]\)表示已经到第\(i\ ...