matlab 矢量化,matlab矢量化编程简要

本文介绍了MATLAB中矢量化编程的基本技术,包括下标法、线性法、逻辑法等选取矩阵子阵的方法,以及数组操作、矩阵操作、布朗数组操作的原理和示例。此外,还讲解了如何从向量构建矩阵、相关函数的使用,以及如何优化涉及多个向量的操作,如矩阵函数计算、排序、设置和计数操作。文章通过实例展示了如何利用稀疏矩阵提高计算效率,最后给出了优化代码的附加例子。
摘要由CSDN通过智能技术生成

一、基本技术

1)MATLAB索引或引用(MATLAB Indexing or Referencing)

在MATLAB中有三种基本方法可以选取一个矩阵的子阵。它们分别是下标法,线性法和逻辑法(subscripted, linear,

and

logical)。

1.1)下标法

非常简单,看几个例子就好。

A = 6:12;

A([3,5])

ans =

8 10

A([3:2:end])

ans =

8 10 12

A = [11 14 17;12 15 18;13 16

19];

A(2:3,2)

ans =

15

16

1.2)线性法

二维矩阵以列优先顺序可以线性展开,可以通过现行展开后的元素序号来访问元素。

A = [11 14 17;12 15 18;13 16

19];

A(6)

ans =

16

A([3,1,8])

ans =

13 11 18

A([3;1;8])

ans =

13

11

18

1.3)逻辑法

用一个和原矩阵具有相同尺寸的0-1矩阵,可以索引元素。在某个位置上为1表示选取元素,否则不选。得到的结果是一个向量。

A = 6:10;

A(logical([0 0 1 0 1]))

ans =

8 10

A =[1 2;3 4];

B = [1 0 0 1];

A(logical(B))

ans =

1 4

2)数组操作和矩阵操作(Array Operations vs. Matrix

Operations)

对矩阵的元素一个一个孤立进行的操作称作数组操作;而把矩阵视为一个整体进行的运算则成为矩阵操作。MATLAB运算符*,/,\,^都是矩阵运算,而相应的数组操作则是.*,

./, .\, .^

A=[1 0 ;0 1];

B=[0 1 ;1 0];

A*B % 矩阵乘法

ans =

0 1

1 0

A.*B % A和B对应项相乘

ans =

0 0

0 0

3)布朗数组操作(Boolean Array

Operations)

对矩阵的比较运算是数组操作,也就是说,是对每个元素孤立进行的因此其结果就不是一个“真”或者“假”,而是一堆“真假”。这个结果就是布朗数组。

D = [-0.2 1.0 1.5 3.0 -1.0 4.2

3.14];

D >= 0

ans =

0 1 1 1 0 1

1

如果想选出D中的正元素:

D = D(D>0)

D =

1.0000 1.5000 3.0000 4.2000 3.1400

除此之外,MATLAB运算中会出现NaN,Inf,-Inf。对它们的比较参见下例

Inf==Inf返回真

Inf<1返回假

NaN==NaN返回假

同时,可以用isinf,isnan判断,用法可以顾名思义。

在比较两个矩阵大小时,矩阵必须具有相同的尺寸,否则会报错。这是你用的上size和isequal,isequalwithequalnans(R13及以后)。

4)从向量构建矩阵(Constructing Matrices from

Vectors)

在MATLAB中创建常数矩阵非常简单,大家经常使用的是:

A =

ones(5,5)*10

但你是否知道࿰

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值