避免使用循环的几个高效matlab矩阵操作

matlab拥有强大的晕针运算能力,下面的几个例子展示了很多在其他语言中需要用循环遍历才能完成的操作在matlab里可以用矩阵操作来完成

1)将矩阵中小于零的元素置零:

a = [1,2,3;-1,-2,-3;1,0,-1]
a(a<0) = 0

打印结果:

a =

     1     2     3
    -1    -2    -3
     1     0    -1

a =

     1     2     3
     0     0     0
     1     0     0

2)将矩阵a中小于0的元素乘以2,其他元素不改变值:

a = [1,2,3;-1,-2,-3;1,0,-1]
a(find(a<0)) = a(find(a<0))*2

结果打印如下:

a =

     1     2     3
    -1    -2    -3
     1     0    -1

a =

     1     2     3
    -2    -4    -6
     1     0    -2

说明:

find函数返回符合逻辑判断的矩阵元素的索引(按列索引),例如:

>> a = [1,2,3;-1,-2,-3;1,0,-1]
   find(a==0)

a =

     1     2     3
    -1    -2    -3
     1     0    -1

ans =

     6

上面的find()输出6,因为在矩阵a中,第6个元素的值为0,满足find操作的逻辑,在matlab中矩阵索引按列进行,从1开始。

3)有矩阵a:

a =

     1     6    11    16    21
     2     7    12    17    22
     3     8    13    18    23
     4     9    14    19    24
     5    10    15    20    25

另有向量 x = [1,3,5] 与向量 y = [1,2,4]

现在要按x和y取出a中的元素,形成新矩阵b,也即:取出矩阵a中的   第1行第1列  ,   第3行第2列  , 第5行第4列    的元素:

b = a(x,y)
b = diag(b)

b =

1
8
20

时间: 2024-10-18 15:34:01

避免使用循环的几个高效matlab矩阵操作的相关文章

matlab矩阵操作

1:求行数  nrow=size(matrix,1); 2:求列数  ncol=size(matrix,2); 3:矩阵合并 c1=[m1,m2]横向合并  c2=[m1;m2]纵向合并 m1= [5     2     3] ; m2=[1     2     3]; c1 =[5     2     3     1     2     3]; c2 =[ 5 2 3 1 2 3 ] matlab的下标从1开始,取matlab的元素直接用m[index]即可 取子矩阵 m[r1:rn,:]  

DAY13 Matlab矩阵操作随手练习

A=[1 2 3;4 5 6];B=[1 3 5;7 9 5];C=A';D=B*B';E=[1 1 2 2 3 3 4 4 4 5];F=unique(E);E(2)=[];repmat(E,4,4);I=eye(10,10);K=rand(10); im1=(imread('IMG_4114.jpg')); imshow(I); im11=im1(:,:,1); im12=im1(:,:,2); im13=im1(:,:,3); figure,imshow(im11); figure,ims

MATLAB命令大全和矩阵操作大全

转载自: http://blog.csdn.net/dengjianqiang2011/article/details/8753807 MATLAB矩阵操作大全 一.矩阵的表示在MATLAB中创建矩阵有以下规则: a.矩阵元素必须在"[ ]"内: b.矩阵的同行元素之间用空格(或",")隔开: c.矩阵的行与行之间用";"(或回车符)隔开: d.矩阵的元素可以是数值.变量.表达式或函数: e.矩阵的尺寸不必预先定义. 二,矩阵的创建: 1.直接输

matlab矩阵内存预分配

matlab矩阵内存预分配就意味着,划定一个固定的内存块,各数据可直接按"行.列指数"存放到对应的元素中.若矩阵中不预配置内存.则随着"行.列指数"的变大.MATLAB就必须不断地为矩阵找到新的"空的内存",从而导致"建造矩阵"的速度大大下降. Hilbert矩阵的数学描写叙述 Hilbert矩阵是著名的"坏条件"矩阵,当中其第(i,j)元素的表达式是a(i,j)=1/(i+j-1). 代码比較: % 20

matlab常用操作备忘

(1)管理命令和函数 addpath  :添加目录到MATLAB搜索路径 doc      :在Web浏览器上现实HTML文档 help     :显示Matlab命令和M文件的在线帮助 helpwin helpdesk :help 兄弟几个 lookfor  :在基于Matlab搜索路径的所有M文件中搜索关键字 partialpath:部分路径名      8*) path     :所有关于路径名的处理 pathtool :一个不错的窗口路径处理界面 rmpath   :删除搜索路径中指定目

matlab————矩阵输出到txt

matlab如何输出矩阵到txt并指定数的精度 (2013-11-20 16:50:43)转载▼ 标签: matlab 输出数据 假设你的数据矩阵为a; [m n] = size(a); [filename pathname] = uiputfile{'*.txt','Select Save file'); if ~filename return; else str = [pathname filename]; fin = fopen(str,'wt'); for i = 1:m for j =

MATLAB常用操作

1.点乘,点除,点乘方 点乘(对应元素相乘),必须同维或者其中一个是标量,a.*b 点除,a.\b表示矩阵b的每个元素除以a中对应元素或者除以常数a,a./b表示常数a除以矩阵b中每个元素或者矩阵a除以矩阵b对应元素或者常数b 点乘方a.^b,矩阵a中每个元素按b中对应元素乘方或者b是常数 2.矩阵中元素的操作 矩阵a中第r行,a(r,:), 第r列,a(:,r), 依次提取每一列组成一个列向量a(:), 提取子矩阵第i到j行和第k到t列a(i:j,k:t) 可以通过下标引用,但是元素下标从1开

matlab矩阵合并及相关运算

1.matlab允许向量(和矩阵)合并,且matlab提供了两种合并方式,[a,b]和[a;b],两者的结果是不一样的. a=rand(2,3): b=rand(2,3): c=[a;b]: d=[a,b]: c的结果是将b整体合并到a 的下边,而d的结果是整体将b合并到a 的右边. 2.创建等差向量组 a=[1:2:11] 注意涉及到向量内部对应数据之间的运算时一定要用点运算符号,(.)例如,求表达式b=a^2时应该写作 b=a.^2 也可以利用linspace来创建等差向量,linspace

matlab字符串操作总结

matlab字符串操作总结 字符串操作总结 char(S1,S2,…)利用给定的字符串或单元数组创建字符数组double(S)将字符串转化成ASC码形式cellstr(S)利用的给定的字符数组创建字符串单元数组blanks(n)生成一个由n个空格组成的字符串deblank(S)删除尾部的空格eval_r(S) evalc(S)使用MATLAB解释器求字符串表达式的值ischar(S)判断是不是字符串数组iscellstr(C)判断是不是字符串单元数组isletter(S)判断是不是字母isspa