Octave/Matlab初步学习
Octave/Matlab初步学习
1.基本运算
和其他语言一样,可以通过数学运算符号来实现数学公式的运算。逻辑运算也基本相同
要注意的是,≠这个符号,表达式为
1 ~= 2
而不是用!=来表达
2.变量
A = 3
赋值
敲下回车键可以自动实现打印输出
可以通过后面
A = 3; %semicolon supressing output
这样就可以不用自动打印
disp(A)
这样就可以实现打印
\(\pi\)可以通过:
a = pi
来赋值
还可以fomat打印格式
disp(sprintf('2 decimals: %0.2f', a))
打印出来的结果是:输出小数点后面2位
2 decimals: 3.14
这种格式和c语言类似
也可以控制小数点输出的语句:
format long format short
分别定义输出为长小数点和短小数点
3.矩阵和向量
A = [1 2;3 4;5 6]
输出为
分号则是分割为行,本质上就是换到下一行
向量也可以定义
>>v = [1 2 3]
v =
1 2 3
>>v = [1; 2; 3]
v =
1
2
3
还可以通过步伐来定义矩阵
v = [1: 0.1 :22]
意思是从1开始,间隔为0.1,一直增加到2
输出是;

相似的还可以通过:步伐,来实现集合赋值:
>>v = 1 : 6
v =
1 2 3 4 5 6
还可以通过语句来快速定义都是1 的矩阵
ones(2, 3)
所有元素都是1
可以通过
C = 2*ones(2, 3)
生成全部是2的矩阵
w = zeros(1, 3)
这是一个全部是0的矩阵
还可以定义随机数矩阵
数值介于0到1
rand(3, 3)
还可以定义正态分布随机变量矩阵
默认平均数是0,方差等于1
w = randn(1,3)
- 可以通过hist(w) 来绘制一个矩阵的直方图

生成单位矩阵:
I = eye(3)
4. 数据导入
- 先介绍简单的操作:(size 和 length)
A = [1 2;3 4;5 6];
size(A)
#得到了A矩阵是3行2列
size(A,1)
#得到了A矩阵的列数
size(A,2)
#得到了A矩阵的行数
v = [1,2,3,4];
length(v);
#得到v的数据长度
介绍文件的加载和读入,修改
- 进入目录等等操作和Linux命令一模一样
如果要加载文件,进入对应目录

who命令

可以展示所有定义的变量
whos命令
可以更详细的展示变量的信息

然后,可以键入文件名,来display
可以发现,clear命令可以删除一个变量
但是,单单一个clear要小心使用,会删除所有变量
如何储存数据?
v = priceY(1:10)
此时,v就是一个1*10的向量,而且数值是从priceY中得到的,设置为前10个元素
如果要存入磁盘,用:
save hello.mat v
将v 储存为 “hello.mat”
这个save命令将v用二进制储存
如果要用人看懂的来储存.用save hello.txt v -ascii
如何操作数据?
索引操作和其他语言都一样,:和python差不多

注意切片,matlab可以对行和列进行切片操作
A(:,2)
A(2,:)
A([1 3], :)
%返回第一行和第三行
%当然,索引的同时也可以赋值
%也可以这样赋值
A = [A, [100;101;102]]
%还可以通过类似的方式实现矩阵相连
C = [A B]%横向相连
C = [A;B]%竖向相连
%所以,分号可以相当于换到下一行
还有一个特殊的语法:
A(:)作用是,把A中的所有元素放入一个列向量中
5. 数据处理computing date
矩阵乘法
* 矩阵乘法
.* 对应数值相乘.点乘
以此类推,“ . ” + “运算符”
可以把运算推广到整个矩阵

运算符:
log, exe ,abs(取绝对值)

除了这个,还可以用ones
v = v + x * ones(length(v),1)
对矩阵取转置:
A'
max函数:(可以对矩阵用!)

a<3:

可以说是一种过滤数据的用法
magic函数:
相当于构建了一个数独:

(几乎没什么用处(笑))
sum函数,把所有的数据加起来
prod函数,把所有数据乘起来
floor函数,把所有数据想下去取整
ceil 函数,把所有数据向下取整
max函数还可以对某一列或者某一行来取最大值:

在二维数据集,想要得到最大的数用
max(max(A))
或者用之前提到过的方法:
max(A(:))
sum函数还可以逐行或者逐列相加

参数1是按行相加,参数2是按列相加
其实吧,这个参数1,2,实际上指的是维数dimension ,行是第一维,列是第二维,等等
如何只去对角元素?
可以与单位矩阵点乘!
脑洞再开一点,可以用
sum(sum(A.*eye(9)))
来计算斜边F和
当然,如果你想计算反过来的斜边,
可以用函数:
flipud(eye(9))
这样可以得到镜面对称的单位矩阵
最重要的一点!!!!
矩阵求逆!!!
pinv(A)
...但是遇到不可逆的,仍然可以求逆,这叫假求逆!
6. Plotting Data 数据可视化
plot(t,y1)
这样的代码,可以让t作为自变量,y2作为因变量
来绘制出图形:
但是,这样一次只能在一张figure上绘制一种图像,如果要同时绘制的话,要用:
hold on;
当然,同一张图的话,可以设定不同图像采取不同的颜色来进行
还可以设置x,y轴的名字,不同图像的名字。整个图像的标题等等。总之感觉和matplotlib差不多吧。
还可以保存图像,当然,你要得先进入你要保存到哪里
tuxiang hold on;
plot(t,y2,'r');
xlabel('time')
ylabel('value')
legend('sin','cos')
title('my plot')
print -dpng 'myplot.png'
close这个命令可以让图像关掉
也可以为你的图像标号:
figure(1);plot(t,y1);
figure(2);plot(t,y2);
也可用绘制子图:(十分方便,建议使用)
subplot(1,2,1)
将图像分为1*2的格子,然后使用第一个格子。
注意对应参数
subplot(1,2,3);
plot(t,y1);
subplot(1,2,2);
plot(t,y2);
最后,学习改变轴的刻度:
axis([0.5 1 -1 1])
还有几个命令
clf 清理所有的图像
可视化矩阵:
A = magic(5);
imagesc(A)

可视化矩阵
还可以添加一些命令,在imagesc后面clorbar,colormap gray
这样就可以很直观的从颜色的深浅来看出矩阵哪里偏小,哪里偏大

imagesc(magic(15)),colorbar,colormap gray;
逗号是链接函数调用
意思是,逗号链接的一个接一个执行
称为:逗号连接的命令或者函数调用
7. 控制语句:
感觉这节不需要做什么笔记,记住就行,反正大同小异
- for
for i =1:10,
v(i) = 2^i;
end;
循环结构差不多就这样吧。
while
i=1;
while i<= 5,
v(i) = 100;
i = i+1;
end;
当然,循环中可以加上
break语句if-else
v(1) =2;
if v(1) = 1,
disp('wrong');
elseif v(1) = 2,
disp('right');
else
disp('wrong');
end;
定义和使用函数
如何定义函数?---第一种方法
首先,要在文本编辑器中写出你的函数:like this
function t = squreThisNumber(x) y = x^2;
y是返回值,x是参数。下面是定义的函数体
然后,这时候,要将这个东西保存到一个地址中去,调用的时候才知道调用哪里!!
要调用函数的时候,用cd方法进入到储存函数的地址,然后就可以调用了---第二种方法(高级)
用addpath('xxxxxx')
xxxx指的是函数储存路径,所以这样就能自动的到那个地方去寻找函数
当然,函数不仅仅只能返回一个,也可以返回矩阵,向量等等多个数值
Octave/Matlab初步学习的更多相关文章
- 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 ...
- Matlab 进阶学习记录
最近在看 Faster RCNN的Matlab code,发现很多matlab技巧,在此记录: 1. conf_proposal = proposal_config('image_means', ...
- json2.js的初步学习与了解
json2.js的初步学习与了解,想要学习json的朋友可以参考下. json2.js的初步学习与了解 1.)该js的下载地址是:http://www.json.org/json2.js 2.)在页面 ...
- 老周的ABP框架系列教程 -》 一、框架理论初步学习
老周的ABP框架系列教程 -- 一.框架理论初步学习 1. ABP框架的来源与作用简介 1.1 简介 1.1.1 ABP框架全称为"ASP.NET Boilerplate ...
- 初步学习nodejs,业余用node写个一个自动创建目录和文件的小脚本,希望对需要的人有所帮助
初步学习nodejs,业余用node写个一个自动创建目录和文件的小脚本,希望对需要的人有所帮助,如果有bug或者更好的优化方案,也请批评与指正,谢谢,代码如下: var fs = require('f ...
- EF Codefirst 初步学习(二)—— 程序管理命令 更新数据库
前提:搭建成功codefirst相关代码,参见EF Codefirst 初步学习(一)--设置codefirst开发模式 具体需要注意点如下: 1.确保实体类库程序生成成功 2.确保实体表类库不缺少 ...
- 初步学习python
自计算机诞生以来,也伴随着计算机语言的诞生,现在,全世界的编程语言有600多种,但流行的编程语言也就20多种. Java和C一直占据着前两名.但是近年来伴随着人工智能的发展,Python发展迅猛,以其 ...
- Git的初步学习
前言 感谢! 承蒙关照~ Git的初步学习 为什么要用Git和Github呢?它们的出现是为了用于提交项目和存储项目的,是一种很方便的项目管理软件和网址地址. 接下来看看,一家公司的基本流程图: 集中 ...
- [学习一个] Matlab GUI 学习笔记 Ⅰ
Matlab GUI 学习笔记 Ⅰ 1. Foreword Matlab 是严格意义上的编程语言吗?曾经有人告诉我他是通过 Matlab 学会了面对对象编程,我是不信的,但这依然不妨碍它在特殊领域的强 ...
随机推荐
- 洛谷P7167 [eJOI 2020 Day1] Fountain (单调栈+ST)
开两个数组:to[i][j]表示从i这个位置向下的第2j个圆盘是哪个,f[i][j]表示流满从i这个位置向下的 2j 个圆盘需要多少体积的水. 详情见代码: 1 #include<bits/st ...
- 研一入坑Go 文件操作
1 package main 2 3 import ( 4 "fmt" 5 "os" 6 "path" 7 "path/filep ...
- asp.net core web 解决方案多项目模板制作打包总结
一.文件夹\项目结构 1.1.文件夹 net6.0:针对.net 6.0 项目模板 net6.0pack:针对net6.0打包 1.2.项目结构 Web\WebApi多项目.各层项目.单元测试项目 目 ...
- eDP接口简介
1. eDP背景介绍 随着显示分辨率的越来越高,传统的VGA.DVI等接口逐渐不能满足人们的视觉需求. 随后就产生了以HDMI.DisplayPort为代表的新型数字接口,外部接口方面HDMI占据 ...
- IP分类与子网划分
1.IP地址的格式 每一类地址都由两个固定长度的字段组成: (1)网络号 net-id:它标志主机(或路由器)所连接到的网络 (2)主机号 host-id:它标志该主机(或路由器). 最大可指派 ...
- RDD(弹性分布式数据集)及常用算子
RDD(弹性分布式数据集)及常用算子 RDD(Resilient Distributed Dataset)叫做弹性分布式数据集,是 Spark 中最基本的数据 处理模型.代码中是一个抽象类,它代表一个 ...
- 如何在Spring Boot开启事务
说到事务,那什么是事务呢? 事务(Transaction),一般是指要做的或所做的事情. 原子性(Atomicity):事务作为一个整体被执行,包含在其中的对数据库的操作要么全部被执行,要么都不执行. ...
- Oracle用户创建及删除
偶尔会用到,记录.分享. 1. Oracle用户创建 #创建用户表空间create tablespace $username datafile '/u01/app/oracle/oradata/ufg ...
- java安全之CC1浅学(2)
前言 上一篇了解了commons-collections中的Transformer,并且构造了一个简单的payload,接下来就需要将其改造为一个可利用的POC AnnotationInvocatio ...
- SpringBoot使用poi实现导出excel
//实体类 //导出的数据的实体 public class User { private String id; private String name; private String year; // ...