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的数据长度
  • 介绍文件的加载和读入,修改

    1. 进入目录等等操作和Linux命令一模一样

    如果要加载文件,进入对应目录

  1. who命令

    可以展示所有定义的变量

    whos命令

    可以更详细的展示变量的信息

然后,可以键入文件名,来display

可以发现,clear命令可以删除一个变量

但是,单单一个clear要小心使用,会删除所有变量

  1. 如何储存数据?

    v = priceY(1:10)

    此时,v就是一个1*10的向量,而且数值是从priceY中得到的,设置为前10个元素

    如果要存入磁盘,用:

    save hello.mat v

    将v 储存为 “hello.mat”

    这个save命令将v用二进制储存

    如果要用人看懂的来储存.用

    save hello.txt v -ascii
  2. 如何操作数据?

    索引操作和其他语言都一样,:和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初步学习的更多相关文章

  1. 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 ...

  2. Matlab 进阶学习记录

    最近在看 Faster RCNN的Matlab code,发现很多matlab技巧,在此记录: 1. conf_proposal  =  proposal_config('image_means', ...

  3. json2.js的初步学习与了解

    json2.js的初步学习与了解,想要学习json的朋友可以参考下. json2.js的初步学习与了解 1.)该js的下载地址是:http://www.json.org/json2.js 2.)在页面 ...

  4. 老周的ABP框架系列教程 -》 一、框架理论初步学习

    老周的ABP框架系列教程 -- 一.框架理论初步学习   1. ABP框架的来源与作用简介 1.1  简介 1.1.1       ABP框架全称为"ASP.NET Boilerplate ...

  5. 初步学习nodejs,业余用node写个一个自动创建目录和文件的小脚本,希望对需要的人有所帮助

    初步学习nodejs,业余用node写个一个自动创建目录和文件的小脚本,希望对需要的人有所帮助,如果有bug或者更好的优化方案,也请批评与指正,谢谢,代码如下: var fs = require('f ...

  6. EF Codefirst 初步学习(二)—— 程序管理命令 更新数据库

    前提:搭建成功codefirst相关代码,参见EF Codefirst  初步学习(一)--设置codefirst开发模式 具体需要注意点如下: 1.确保实体类库程序生成成功 2.确保实体表类库不缺少 ...

  7. 初步学习python

    自计算机诞生以来,也伴随着计算机语言的诞生,现在,全世界的编程语言有600多种,但流行的编程语言也就20多种. Java和C一直占据着前两名.但是近年来伴随着人工智能的发展,Python发展迅猛,以其 ...

  8. Git的初步学习

    前言 感谢! 承蒙关照~ Git的初步学习 为什么要用Git和Github呢?它们的出现是为了用于提交项目和存储项目的,是一种很方便的项目管理软件和网址地址. 接下来看看,一家公司的基本流程图: 集中 ...

  9. [学习一个] Matlab GUI 学习笔记 Ⅰ

    Matlab GUI 学习笔记 Ⅰ 1. Foreword Matlab 是严格意义上的编程语言吗?曾经有人告诉我他是通过 Matlab 学会了面对对象编程,我是不信的,但这依然不妨碍它在特殊领域的强 ...

随机推荐

  1. vue3 vite2 封装 SVG 图标组件 - 基于 vite 创建 vue3 全家桶项目续篇

    在<基于 vite 创建 vue3 全家桶>一文整合了 Element Plus,并将 Element Plus 中提供的图标进行全局注册,这样可以很方便的延续 Element UI 的风 ...

  2. 洛谷P4513 小白逛公园 (线段树)

    这道题看起来像是线段树和最大子段和的结合,但这里求最大子段和不用dp,充分利用线段树递归的优势来处理.个人理解:线段树相当于把求整个区间的最大子段和的问题不断划分为很多个小问题,容易解决小问题,然后递 ...

  3. Vue 中为什么要有nextTick?

    摘要:本文将浅析nextTick的作用.使用场景和背后的原理实现,希望对大家有所帮助. 本文分享自华为云社区<Vue 中的 nextTick 有什么作用?>,作者:CoderBin. 一. ...

  4. Dapr v1.9.0 版本已发布

    Dapr是一套开源.可移植的事件驱动型运行时,允许开发人员轻松立足云端与边缘位置运行弹性.微服务.无状态以及有状态等应用程序类型.Dapr能够确保开发人员专注于编写业务逻辑,而不必分神于解决分布式系统 ...

  5. Vue学习之--------列表排序(ffilter、sort、indexOf方法的使用)、Vue检测数据变化的原理(2022/7/15)

    文章目录 1.列表排序 1.1 .代码实例 1.2 .测试效果 1.3.需要掌握的前提知识 2.Vue监测数据变化的原理 2.1.代码实例 2.2 .测试效果 3.Vue检测数据的原理 3.1 基本知 ...

  6. 使用ssm框架搭建的图书管理系统

    等下贴代码 学生图书管理系统 实现的功能: 1.图书信息查询(暂时未分页处理) 2.图书信息修改(点击保存按钮后返回修改后的图书信息界面) 3.删除一本图书(删除某一本书籍,在图书管理界面则不存在该条 ...

  7. Redis—问题(1)

    写在前面 Redis 是一种 NoSQL 数据库,包含多种数据结构.支持网络.基于内存.可选持久性的键值对存储数据库,在我们的日常开发中会经常使用 Redis 来解决许多问题,比如排行榜.消息队列系统 ...

  8. 一次 Redis 事务使用不当引发的生产事故

    这是悟空的第 170 篇原创文章 官网:http://www.passjava.cn 你好,我是悟空. 本文主要内容如下: 一.前言 最近项目的生产环境遇到一个奇怪的问题: 现象:每天早上客服人员在后 ...

  9. Elasticsearch rest-high-level-client 基本操作

    Elasticsearch rest-high-level-client 基本操作 本篇主要讲解一下 rest-high-level-client 去操作 Elasticsearch , 虽然这个客户 ...

  10. csharp 基础

    1.C#基础 1.1 C#简介 C#是一个面向对象的.由微软开发的高级编程语言,它专门为公共语言基础结构(CLI)设计的,CLI是由可执行代码和运行时环境组成的. C#语言在编写时有点像JAVA,在运 ...