【Matlab开发】函数bsxfun的使用

【Matlab开发】函数bsxfun的使用

版权声明:本文为博主原创文章,转载请注明出处http://blog.csdn.net/lg1259156776/



说明:当我们想对一个矩阵A的每一列或者每一行与同一个长度相等的向量a进行某些操作(比较大小,乘除等)时,我们只能用循环方法或者利用repmat函数将要操作的向量a复制成和A一样尺寸的矩阵,进而进行操作。从MATLAB R2007a开始,再遇到类似的问题时,我们有了简洁高效的方法,即利用bsxfun函数。


bsxfun函数用法

【函数描述】C=bsxfun(fun,A,B):两个数组间元素逐个计算,fun是函数句柄或者m文件,也可以为如下内置函数

            @plus           Plus
            @minus          Minus
            @times          Array multiply
            @rdivide        Right array divide
            @ldivide        Left array divide
            @power          Array power
            @max            Binary maximum
            @min            Binary minimum
            @rem            Remainder after division
            @mod            Modulus after division
            @atan2          Four-quadrant inverse tangent
            @hypot          Square root of sum of squares
            @eq             Equal
            @ne             Not equal
            @lt             Less than
            @le             Less than or equal
            @gt             Greater than
            @ge             Greater than or equal
            @and            Element-wise logical AND
            @or             Element-wise logical OR
            @xor            Logical EXCLUSIVE OR

a = [1,2,3;4,5,6;7,8,9]

a =

     1     2     3
     4     5     6
     7     8     9

>> acol = bsxfun(@times,a,[1 2 4])

acol =

     1     4    12
     4    10    24
     7    16    36

A = magic(5);
>> A

A =

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

>> mean(A)

ans =

    13    13    13    13    13

>> A = bsxfun(@minus, A, mean(A))

A =

     4    11   -12    -5     2
    10    -8    -6     1     3
    -9    -7     0     7     9
    -3    -1     6     8   -10
    -2     5    12   -11    -4

Matlab中repmat函数用法

复制和平铺矩阵

函数 repmat

格式 B = repmat(A,m,n) %将矩阵A复制m×n块,即B由m×n块A平铺而成。

B = repmat(A,[m n]) %与上面一致

B = repmat(A,[m n p…]) %B由m×n×p×…个A块平铺而成

repmat(A,m,n) %当A是一个数a时,该命令产生一个全由a组成的m×n矩阵。


2015-11-25 学习笔记 张朋艺

时间: 2024-10-10 11:09:07

【Matlab开发】函数bsxfun的使用的相关文章

matlab函数 bsxfun浅谈(转载)

关于matlab函数 bsxfun本文来源:http://blog.sina.com.cn/s/blog_9e67285801010ttn.html a=[1 2 3];b=[1 2 3]';c=bsxfun(@plus,a,b) c = 2 3 4 3 4 5 4 5 6 相当于:1 2 3 1 1 1 1 2 3 + 2 2 2 1 2 3 3 3 3bsxfun的执行是这样的,如果a和b的大小相同,那么c=a+b. 但如果有某维不同,且a或b必须有一个在这一维的维数为1, 那么bsxfun

matlab学习笔记 bsxfun函数

matlab学习笔记 bsxfun函数 最近总是遇到 bsxfun这个函数,前几次因为无关紧要只是大概看了一下函数体去对比结果,今天再一次遇见了这个函数,想想还是有必要掌握的,遂查了些资料总结如下.   函数bsxfun [功能描述]两个数组间元素逐个计算. [应用场合]当我们想对一个矩阵A的每一列或者每一行与同一个长度相等的向量a进行某些操作(比较大小,乘除等)时,我们只能用循环方法或者利用repmat函数将要操作的向量a复制成和A一样尺寸的矩阵,进而进行操作.从MATLAB R2007a开始

【Matlab开发】matlab中bar绘图设置与各种距离度量

[Matlab开发]matlab中bar绘图设置与各种距离度量 标签(空格分隔): [Matlab开发] [机器学习] 声明:引用请注明出处http://blog.csdn.net/lg1259156776/ Matlab Bar图如何为每个bar设置不同颜色 data = [3, 7, 5, 2;4, 3, 2, 9;6, 6, 1, 4]; b = bar(data); 使用bar绘制非常直观简单,但有时需要突出显示某一个bar,比如该bar是一个标杆,用来衡量其bar的高度,所以可以用醒目

matlab reshape函数

语法 (1)B = reshape(A,m,n) 用法: B=reshape(A,m,n) 返回m*n矩阵B,它的元素是获得A的行宽度.如果A没有m*n元素,得到一个错误结果. 例子: <span style="font-size:18px;">>> A=rand(1,10)</span> 结果: <span style="font-size:18px;">A = Columns 1 through 8 0.1622

Matlab中函数定义方法

Matlab自定义函数的六种方法 n1.函数文件+调用函数(命令)文件:需单独定义一个自定义函数的M文件: n2.函数文件+子函数:定义一个具有多个自定义函数的M文件: n3.Inline:无需M文件,直接定义: n4.匿名函数: n5.Syms+subs:无需M文件,直接定义: n6.字符串+subs:无需M文件,直接定义. ------------ 1.函数文件+调用函数文件:定义多个M文件 % 调用函数文件:myfile.m clear clc for t=1:10 y=mylfg(t);

Matlab中函数句柄@的作用及介绍

问:[email protected](x)acos(x)表示什么意思?其中@代表什么?答:表示f为函数句柄,@是定义句柄的运算符.[email protected](x)acos(x) 相当于建立了一个函数文件:% f.mfunction  y=f(x)y=acos(x); 若有下列语句:[email protected](x)1/2.*(x==-1/2)+1.*(x>-1/28&x<1/2)+1.2.*(x==-1/2); 则相当于建立了一个函数文件: % xsqual.m fun

matlab set函数

1.MATLAB给每种对象的每一个属性规定了一个名字,称为属性名,而属性名的取值成为属性值.例如,LineStyle是曲线对象的一个属性名,它的值决定着线型,取值可以是'-' .':'.'-.'.'--'或'none'.2.属性的操作    set函数的调用格式为:    set(句柄,属性名1,属性值1,属性名2,属性值2,…) 例子: clearx=0:0.2:12;y1=bessel(1,x);y2=bessel(2,x);y3=bessel(3,x);h=plot(x,y1,x,y2,x

matlab 等值线函数 contour

matlab 等值线函数 contour contour是等高线绘制函数我并没怎么用过这个函数,只是参照help将上面的英文翻译一下,如果有错误,请大家提出来.contour(Z)根据矩阵Z画出等高线,Z是以x,y为平面的高度.Z必须是一个至少二维的矩阵.等高线的数量和水平线的值将根据Z值的最小值和最大值自动选择.x,y轴的范围是[1:n]和[1:m],[m,n]=size(Z)contour(Z,n)用n条水平线来绘制Z的等高线.contour(Z,v)是以向量v中的数据来绘制矩阵Z的等高线.

MyEclipse调用Matlab打包函数

本文部分内容参考了http://www.360doc.com/content/15/1103/16/1180274_510463048.shtml 一.检查Java环境 对于已经装上JAVA环境的计算机,首先要确定一下装的环境是否与当前的Matlab builder for java版本相兼容,本文使用的Matlab版本是R2014a. 在CMD.EXE中键入 :java -version 如果出现图中信息则表示已经安装好了JAVA环境并且可以看到它的版本 进一步在cmd中输入javac -ve