octave使用笔记

本文介绍了Octave的使用,包括基本操作、矩阵定义、矩阵运算、绘图、条件语句和循环,以及函数的使用。讲解了如何进行变量管理、矩阵的创建、绘图功能如plot和subplot,并探讨了与其他程序的交互,如load和save函数。

在这里插入图片描述

前置安装

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, 😃 # 访问第一行所有元素
A(:, 2) # 访问第二列所有元素
vec(3:end) # 获取向量从第三个元素到最后一个元素

构造函数:

1:5 # 生成[1, 2, 3, 4, 5]
1:2:5 # 生成[1 3 5],步长为2
zeros(n,m) # 创建nm的全零矩阵
ones(n,m) # 创建n
m的全一矩阵
A=eye(n) # 创建n*n单位矩阵
rand(n,m), randn(n,m) # 创建随机矩阵,rand生成0到1的均匀分布随机数,randn生成标准正态分布随机数
A=zeros(size(B)) # 创建与B相同大小的零矩阵
A=[] # 创建空矩阵,可以用[A, [1, 2]]这种方式动态扩展
A(:,id)=[] # 删除矩阵的指定列

矩阵运算:

inv(A) # 矩阵求逆(对于奇异矩阵,pinv可以求伪逆)
A’ # 矩阵转置
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)获取行数,size(A, 2)获取列数
max(A): 当A为向量时返回最大值,当A为矩阵时返回每列最大值组成的行向量
[val, ind] = max(A) # 同时返回最大值及其索引(对向量操作)
max(A,[],1) # 求每列最大值,返回行向量
max(A,[],2) # 求每行最大值,返回列向量
sum(A, 1) # 求每列和,返回行向量
sum(A, 2) # 求每行和,返回列向量
max(max(A)) # 求整个矩阵的最大值
sum(sum(A)) # 求整个矩阵所有元素的和
prod # 求乘积,用法同sum
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”; % 将图形保存为PNG格式(在某些环境下命令行直接使用可能有问题)
xlabel(“name”), ylabel(“name”) # 设置坐标轴标签
axis([xa,xb, ya, yb]) # 设置坐标轴显示范围(不影响实际数据,只改变视图)
title(“name”) # 设置图形标题
legend(“name1”, “name2”) # 添加图例,按绘图顺序对应
close # 关闭当前图形窗口

默认创建Figure 1窗口,使用figure(number)创建或切换指定编号的图形窗口
subplot(n,m,idx) # 将当前图形窗口划分为n*m网格,在指定位置创建坐标系
在subplot中绘图会一直在该坐标系中进行,直到切换其他subplot
切换subplot不会影响已存在坐标系的状态
使用不同网格划分的subplot可以创建非均匀布局
如果新的subplot与已有的重叠,会覆盖原有坐标系
hold on # 在当前坐标系中保持已有图形,新增图形叠加显示
hold off # 关闭图形保持,新图形会清除旧图形
hold on的作用范围限于当前subplot
在无图形窗口时调用hold on会自动创建Figure 1并设置为hold on状态
新创建的subplot默认hold off
关闭后重新打开的图形窗口恢复默认设置

绘图线型、颜色、标记符号等样式参考相关文档

hist(A) # 绘制向量A的直方图(柱的右边界对应数值)
hist(A,w) # 指定柱状图的分组数,w越大柱子越细

imagesc(A), colorbar, colormap grey # 将矩阵显示为灰度图,添加颜色条,使用灰度色图

文件操作

load(‘filename’) # 加载数据文件,文件格式需合法
load(“a.txt”) # 默认将"a"作为变量名存储数据,可能覆盖已有变量a
b=load(“a.txt”) # 明确指定变量名,避免命名冲突

save file variable # 将指定变量保存到文件
save file # 将所有变量保存到文件
load file # 从文件加载变量,变量名与保存时一致
避免使用b=load(“a.txt”)形式加载多变量文件,因为访问不便且变量只读

控制结构

for i = 1:10 # for循环
while i<10 # while循环
注意for循环实质是遍历向量
循环结构必须以end结束

if condition # 条件语句
elseif condition # 注意elseif没有空格
else
end # 条件结构必须以end结束

函数

function f() # 无参数无返回值函数
function res = f(arg-list) # 单返回值函数
function [res1, res2] = f(arg-list) # 多返回值函数
多返回值函数必须使用[a, b] = f(…)形式调用,A=f(…)只能获得第一个返回值
end # 函数定义结束

函数可保存为.m文件,建议文件名与函数名一致,否则会警告且使用文件名作为函数名
使用函数前需确保其在搜索路径中,可通过cd切换目录或addpath添加目录

关于矩阵乘法的思考

向量内积的两种计算方式:u’*v 与 sum(u.*v)

当数据组织形式为列向量时,多组数据按列排列,结果也按列组织
当数据组织形式为行向量时,多组数据按行排列,结果也按行组织

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值