MATLAB(Octave)命令记录
1. struct:结构体数组
aaaa_s.a = 1;
aaaa_s.b = {'A','B','C'}
aaaa_s.c = [1 2 3 4; 5 6 7 8];
save aaaa_s.txt aaaa_s;
save的结果文件为:
# Created by Octave 8.2.0, Fri Jul 28 15:31:37 2023 CST <wuxiong.wx@B-P26SQ05P-0045.local>
# name: aaaa_s
# type: scalar struct
# ndims: 2
1 1
# length: 3
# name: a
# type: scalar
1 # name: b
# type: cell
# rows: 1
# columns: 3
# name: <cell-element>
# type: sq_string
# elements: 1
# length: 1
A # name: <cell-element>
# type: sq_string
# elements: 1
# length: 1
B # name: <cell-element>
# type: sq_string
# elements: 1
# length: 1
C # name: c
# type: matrix
# rows: 2
# columns: 4
1 2 3 4
5 6 7 8
2. plot:画二维曲线
plot(X,Y,LineSpec) : LineSpec 使用指定的线型、标记和颜色创建绘图;
线型、标记和颜色,指定为包含符号的字符串或字符向量。符号可以按任意顺序显示。您不需要同时指定所有三个特征(线型、标记和颜色)。例如,如果忽略线型,只指定标记,则绘图只显示标记,不显示线条。
示例: "--or"
是带有圆形标记的红色虚线
pos_X=[1 2]'
pos_y=[3 4]'
neg_X=[5 6]'
neg_y=[7 8]'
plot(pos_X, pos_y, 'k+', 'LineWidth', 1, 'MarkerSize', 7) // k+是标记:black黑色的+; +的线宽为1,+标记的大小为7
hold on;
plot(neg_X, neg_y, 'ko', 'MarkerFaceColor', 'y', 'MarkerSize', 7) // MarkerFaceColor — 标记填充颜色 "none" (默认) | "auto" | RGB 三元组 | 十六进制颜色代码 | "r" | "g" | "b" | ... 短名称"y"黄色,对应的RGB三元组为[1 1 0]; MarkerSize — 标记大小 6 (默认) | 正值
LineSpec — 线型、标记和颜色 字符串 | 字符向量
- LineStyle — 线型 "-" (默认) | "--" | ":" | "-." | "none" 分别为实线、虚线、点线、点划线、无线条
- LineWidth — 线条宽度 0.5 (默认) | 正值 (线宽,指定为以磅为单位的正值,其中 1 磅 = 1/72 英寸。如果该线条具有标记,则线条宽度也会影响标记边。)
- Marker — 标记符号 "none" (默认) | "o" | "+" | "*" | "." | ...
- MarkerFaceColor — 标记填充颜色 "none" (默认) | "auto" | RGB 三元组 | 十六进制颜色代码 | "r" | "g" | "b" | ... 短名称"y"黄色,对应的RGB三元组为[1 1 0];
- MarkerSize — 标记大小 6 (默认) | 正值
2. 画散点图scatter
function plotDataPoints(X, idx, K)
%PLOTDATAPOINTS plots data points in X, coloring them so that those with the same
%index assignments in idx have the same color
% PLOTDATAPOINTS(X, idx, K) plots data points in X, coloring them so that those
% with the same index assignments in idx have the same color % Create palette
palette = hsv(K + 1); % c = hsv(m) 返回包含 m 种颜色的颜色图,矩阵(K+1)*3,因为是彩色图(三原色)
colors = palette(idx, :); % 取idx所在行的颜色矩阵 % Plot the data
% scatter(x,y) :在向量 x 和 y 指定的位置创建一个包含圆形标记的散点图。
% scatter(x,y,sz,c) :在向量 x 和 y 指定的位置创建包含圆形标记的散点图,sz(size):圆形标记大小,c(color):标记颜色
scatter(X(:,1), X(:,2), 15, colors); end
3. linspace:生成线性间距向量
y = linspace(-5,5); % 创建一个由区间 [-5,5] 中的 100 个等间距点组成的向量。
y1 = linspace(-5,5,7) ; % 创建一个由区间 [-5,5] 中的 7 个等间距点组成的向量。
4. bsxfun(fun,A,B) 对数组 A 和 B 应用函数句柄 fun 指定的按元素二元运算
例:从矩阵 A 的对应列元素中减去列均值。然后,按标准差进行归一化。
A = [1 2 10; 3 4 20; 9 6 15];
C = bsxfun(@minus, A, mean(A));
D = bsxfun(@rdivide, C, std(A))
D = 3×3 -0.8006 -1.0000 -1.0000
-0.3203 0 1.0000
1.1209 1.0000 0
在 MATLAB R2016b 及更高版本中,您可以直接使用运算符而不是 bsxfun
,因为这些运算符本身支持对具有兼容大小的数组进行隐式扩展。
(A - mean(A))./std(A)
function [X_norm, mu, sigma] = featureNormalize(X)
%FEATURENORMALIZE Normalizes the features in X
% FEATURENORMALIZE(X) returns a normalized version of X where
% the mean value of each feature is 0 and the standard deviation
% is 1. This is often a good preprocessing step to do when
% working with learning algorithms. mu = mean(X);
X_norm = bsxfun(@minus, X, mu); sigma = std(X_norm);
X_norm = bsxfun(@rdivide, X_norm, sigma); % ============================================================ end
5. 求和
5.1 sum
S = sum(A) :默认维度dim=1
S = sum(A,dim) :dim=1是行方向,按照每一行求和(汇总到第一行),结果是行向量;dim=2是列方向,按照每一列求和(汇总到第一列),结果是列向量
octave:85> A
A = 1 2
3 4
octave:83> sum(A, 1)
ans = 4 6
octave:82> sum(A)
ans = 4 6
octave:84> sum(A, 2)
ans = 3
7
5.2 矩阵+向量
octave:105> A=[1 2 3; 4 5 6] % 2x3
A = 1 2 3
4 5 6 octave:106> a
a = 0 1 octave:107> A+a
error: operator +: nonconformant arguments (op1 is 2x3, op2 is 1x2) % A的第1列的每个元素+a的第1列,同理第2、3列(此处a需为1x3 或 跟A的维度一致)
octave:108> b
b = 0
1 octave:109> A+b % A的第1行的每个元素+b的第1行,同理第2、3行
ans = 1 2 3
5 6 7
5.3 求距离的平方 ||x(i) − μj||^2
octave:14> A=[1 2]
A = 1 2 octave:15> B=[2 5]
B = 2 5 octave:16> (A(1,:) - B(1,:)).^2
ans = 1 9 octave:17> sum((A(1,:) - B(1,:)).^2)
ans = 10
6. 数字和矩阵运算:
如 2.^A,对矩阵里面的每个元素 求 2^A(i,j)
如2*A,对矩阵的每个元素 求2*A(i,j)
7. 矩阵和向量的转换:reshape
octave:125> A
A = 1 2 3
4 5 6 octave:126> A(:) % 转换为列向量,本质就是reshape(A, M*N, 1)
ans = 1
4
2
5
3
6 octave:127> B=reshape(A, 6, 1)
B = 1
4
2
5
3
6 octave:128> reshape(B, 2, 3) % 转换为矩阵
ans = 1 2 3
4 5 6
8. 元胞数组:cell array
元胞数组是一种包含名为元胞的索引数据容器的数据类型,其中的每个元胞都可以包含任意类型的数据。例如,
octave:1> B= {42, rand(5), "abcd"}
B =
{
[1,1] = 42
[1,2] = %rand(5)是5*5的随机数(0-1)矩阵 0.422789 0.220235 0.953274 0.978148 0.128346
0.921530 0.154159 0.107819 0.088112 0.205652
0.759998 0.347502 0.243041 0.909032 0.947611
0.433564 0.118798 0.370793 0.339027 0.468828
0.689062 0.534718 0.194046 0.935231 0.665819 [1,3] = abcd
}
octave:2> size(B)
ans = 1 3 octave:3> C = {'one', 'two', 'three';
1, 2, 3}
C =
{
[1,1] = one
[2,1] = 1
[1,2] = two
[2,2] = 2
[1,3] = three
[2,3] = 3
} octave:4> size(C)
ans = 2 3
引用元胞数组的元素有两种方法:
- 将索引括在圆括号
()
中以引用元胞子集,例如,用于定义一个数组子集。 - 将索引括在花括号
{}
中以引用各个元胞中的文本、数字或其他数据。 l例如:ast = C{2,3};C{2,3} = 300 300赋值给C{2,3}; [r1c1, r2c1, r1c2, r2c2] = C{1:2,1:2}- 您可以使用花括号进行索引来访问多个元胞的内容。MATLAB 会以逗号分隔的列表形式返回这些元胞的内容。因为每个元胞可以包含不同类型的数据,所以无法将此列表分配给单个变量。但是,您可以将此列表分配给与元胞数量相同的变量。MATLAB 将按列顺序赋给变量。
将 C 的四个元胞的内容赋给四个变量。
[r1c1, r2c1, r1c2, r2c2] = C{1:2,1:2}
- 您可以使用花括号进行索引来访问多个元胞的内容。MATLAB 会以逗号分隔的列表形式返回这些元胞的内容。因为每个元胞可以包含不同类型的数据,所以无法将此列表分配给单个变量。但是,您可以将此列表分配给与元胞数量相同的变量。MATLAB 将按列顺序赋给变量。
圆括号中的元胞数组索引引用元胞集。例如,要创建一个属于 C
的子集的 2×2 元胞数组,请使用圆括号。
upperLeft = C(1:2,1:2)
upperLeft=2×2 cell array
{'one'} {'two'}
{[ 1]} {[ 2]}
通过将元胞集替换为相同数量的元胞来更新这些元胞集。例如,将 C
的第一行中的元胞替换为大小相等 (1×3) 的元胞数组。
C(1,1:3) = {'first','second','third'}
C=2×3 cell array
{'first'} {'second'} {'third'}
{[ 1]} {[ 2]} {[ 3]}
9. find
- k = find(X) 返回一个包含数组 X 中每个非零元素的线性索引的向量。
- ——如果 X 为向量,则 find 返回方向与 X 相同的向量。
- ——如果 X 为多维数组,则 find 返回由结果的线性索引组成的列向量。
- k = find(逻辑表达式):同上,满足逻辑表达式的
octave:27> idx
idx = 2
3 octave:28> find(idx==3) % 直接idx,则是返回非0元素
ans = 2
octave:29> A=[ 1 3 ; 3 4]
A = 1 3
3 4 octave:31> find(A==3)
ans = 2
3
octave:32> find(A>1)
ans = 2
3
4
10. 等于(==),不等于(~=)
function centroids = computeCentroids(X, idx, K) % 计算聚类中心
%COMPUTECENTROIDS returns the new centroids by computing the means of the
%data points assigned to each centroid.
% centroids = COMPUTECENTROIDS(X, idx, K) returns the new centroids by
% computing the means of the data points assigned to each centroid. It is
% given a dataset X where each row is a single data point, a vector
% idx of centroid assignments (i.e. each entry in range [1..K]) for each
% example, and K, the number of centroids. You should return a matrix
% centroids, where each row of centroids is the mean of the data points
% assigned to it.
% % Useful variables
[m n] = size(X); % You need to return the following variables correctly.
centroids = zeros(K, n); % ====================== YOUR CODE HERE ======================
% Instructions: Go over every centroid and compute mean of all points that
% belong to it. Concretely, the row vector centroids(i, :)
% should contain the mean of the data points assigned to
% centroid i.
%
% Note: You can use a for-loop over the centroids to compute this.
% for i = 1: K
s = sum(idx == i);
if (s ~= 0) % 不等于
centroids(i, :) = mean(X(find(idx == i), :))
else
centroids(i, :) = zeros(1, n);
end
end % ============================================================= end
11. randperm 整数的随机排列
p = randperm(
返回行向量,其中包含从 1 到 n
)n
没有重复元素的整数随机排列。
p = randperm(
返回行向量,其中包含在 1 到 n
,k
)n
之间随机选择的 k
个唯一整数。
X = rand(
返回一个由均匀分布的 (0,1)之间 随机数组成的 n
)n
×n
矩阵。
X = rand(m,
返回一个由均匀分布的 (0,1)之间 随机数组成的 m×n
)n
矩阵。
12. 读取图像imread('xxx.img'),显示图像imagesc(C)
% Load an image of a bird
A = double(imread('bird_small.png')); % A:128*128*3,彩色图片三元组 A = A / 255; % Divide by 255 so that all values are in the range 0 - 1;不做这一步,下一步的imagesc(A)展示不出来?? imagesc(A) % 将数组 A 中的数据显示为一个图像
MATLAB(Octave)命令记录的更多相关文章
- 吴恩达《机器学习》课程笔记——第六章:Matlab/Octave教程
上一篇 ※※※※※※※※ [回到目录] ※※※※※※※※ 下一篇 这一章的内容比较简单,主要是MATLAB的一些基础教程,如果之前没有学过matlab建议直接找一本相关书籍,边做边学,matl ...
- 信号与系统实验序章0——MATLAB基础命令入门
本次开启新的系列,关于用Matlab实现常见信号和函数的生成和变换. 同时如果没有MATLAB基础,那么可以跟着本文一步一步学习Matlab的相关操作,本文旨在记录在信号与系统课程中MATLAB的学习 ...
- Matlab 进阶学习记录
最近在看 Faster RCNN的Matlab code,发现很多matlab技巧,在此记录: 1. conf_proposal = proposal_config('image_means', ...
- Libsvm:脚本(subset.py、grid.py、checkdata.py) | MATLAB/OCTAVE interface | Python interface
1.脚本 This directory includes some useful codes: 1. subset selection tools. (子集抽取工具) subset.py 2. par ...
- MYSQL存储过程中常使用的命令记录
MYSQL存储过程中常使用的命令记录 1.触发器trigger 查看:show triggers; 2.存储过程procedure 查看:show procedure status; 查看详细:sho ...
- Linux命令记录。
引用:http://www.cnblogs.com/xiaoluo501395377/archive/2013/03/31/2992500.html 首先,需要确定的是知道的是:对于Linux系统来说 ...
- Bash shell命令记录和CentOS的一些技巧
①CentOS的实用技巧: 一.按下ctrl+alt+F2可由图形界面切换至命令行(shell窗口),按下ctrl+alt+F1可由命令行切换至图形界面(前提是安装CentOS时软件选择项选择安装了图 ...
- Linux服务器时间相关命令记录
前言 以往安装服务器时间都是正常,但是最近服务器的时间经常出现问题,所以在安装配置完成服务器之后需要对服务器的时间进行测试,如果服务器时间异常,那么当程序去取系统时间的时候就会出现问题. 时间相关命令 ...
- Matlab 快捷键 命令
1. 在命令窗口(Command Window)中: 1) [上.下键]――切换到之前.之后的命令,可以重复按多次来达到你想要的命令 2) clc――清除命令窗口显示的语句,此命令并不清空当前工作区的 ...
- Vim 命令记录与回放
步骤如下: q+(a..z)寄存器名: 执行你要执行的操作: q 结束操作: 调用为@+寄存器: 列子如下: 在写PHP 程序时用的比较多的是创建函数: 如 function add_in(){ } ...
随机推荐
- 【技术实战】Vue技术实战【一】
需求实战一 组件来源 ant-design-vue Button 按钮 Progress 进度条 效果展示 代码展示 <template> <ARow> <ACol> ...
- 使用 python 快速搭建http服务
python -m SimpleHTTPServer 8888 使用上面的命令可以把当前目录发布到8888端口. 直接浏览器访问 但是这条命令是当前运行的,不是后台运行的,也就是说如果Ctrl + C ...
- centos7升级内核到最新稳定版
前言 centos7默认的内核版本才3.10,诸如VXLAN.eBPF等特性无法体验,因此需要升级.目前(2022.02)Linux的内核版本已更新到5.16. 步骤 更新仓库 yum update ...
- Programming abstractions in C阅读笔记p111-p113: boilerplate
<Programming Abstractions In C>学习第47天,p111-p113,总结如下: 一.技术总结 1.boilerplate /* * File: random.h ...
- 使用redis pipeline提升性能
前言 本篇来介绍一下redis pipeline,主要是由于最近一次在帮开发同学review代码的时候,发现对redis有个循环操作可以优化.场景大概是这样的,根据某个uid要从redis查询一批数据 ...
- [语音识别] 基于Python构建简易的音频录制与语音识别应用
语音识别技术的快速发展为实现更多智能化应用提供了无限可能.本文旨在介绍一个基于Python实现的简易音频录制与语音识别应用.文章简要介绍相关技术的应用,重点放在音频录制方面,而语音识别则关注于调用相关 ...
- 三维模型OSGB格式轻量化的跨平台兼容性技术分析
三维模型OSGB格式轻量化的跨平台兼容性技术分析 在三维模型应用中,OSGB格式轻量化处理是一种常见的技术手段,可以通过数据压缩.简化.滤波等操作,降低三维模型数据的存储空间和传输带宽需求,提高应用程 ...
- 日志开源组件(六)Adaptive Sampling 自适应采样
业务背景 有时候日志的信息比较多,怎么样才可以让系统做到自适应采样呢? 拓展阅读 日志开源组件(一)java 注解结合 spring aop 实现自动输出日志 日志开源组件(二)java 注解结合 s ...
- angular + express 实现websocket通信
最近需要实现一个功能,后端通过TCP协议连接雷达硬件的控制器,前端通过websocket连接后端,当控制器触发消息的时候,把信息通知给所以前端: 第一个思路是单独写一个后端服务用来实现websocke ...
- Machine Learning for NetFlow Anomaly Detection With Human-Readable Annotations 笔记
Machine Learning for NetFlow Anomaly Detection With Human-Readable Annotations 关键摘要 我们开发了一个复杂企业网络中的异 ...