matlab bsxfun memory,[转]matlab函数 bsxfunarrayfun
bsxfun:
C = bsxfun(fun,A,B)
bsxfun可以对矩阵A和矩阵B进行对应元素的fun函数操作。其中,fun是任何标量输入输出的二元操作的函数,例如基本的加减乘除,三角函数,大小比较,以及其他任何符合条件的自定义函数。
C =
bsxfun(fun,A,B) applies the element-by-element
binary operation specified by the function
handle funto
arrays A and B,
with singleton expansion
enabled. fun can be one of the
following built-in functions:
@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; result
in radians
@atan2d
Four-quadrant inverse tangent; result
in degrees
@hypot
Square root of sum of
squares
@eq
Equal
@ne
Not equal
@lt
Less than
@le
Less than or equal to
@gt
Greater than
@ge
Greater than or equal
to
@and
Element-wise logical
AND
@or
Element-wise logical
OR
@xor
Logical exclusive OR
注意,fun不能是符号,例如+,*之类,这些符号都有对应的函数名。例如+ 对应
plus, >= 对应 ge,等等。
一般来说,如果两个矩阵一样大,我们可以直接通过 A+B
这样的方式一样实现,但是bsxfun有一个优点,就是当A,B中任何一维长度为1的时候,函数会自动将该维度和另一个矩阵对应维度的每一行(列)进行运算。如果我们自己进行这样的操作,我们或者要使用循环,或者要使用repmat来扩展矩阵,这都比bsxfun在底层内部实现慢很多,或者要消耗更多内存。
注意:A,B的维数必须要么相等,要么为1.
当其中一个元素的维数=1时,系统自动将其扩展为另一元素的维数
The corresponding dimensions
of A and B must
be equal to each other or equal to one. Whenever a dimension
of A or B is
singleton (equal to
one), bsxfun virtually replicates
the array along that dimension to match the other array. In the
case where a dimension
of A or B is
singleton, and the corresponding dimension in the other array is
zero, bsxfun virtually diminishes
the singleton dimension to zero.
The size of the output
array C is equal to:
max(size(A),size(B)).*(size(A)>0 &
size(B)>0).
For example:如何将一个矩阵的每行或每列元素分别扩大不同的倍数?如[1
2 3;4 5 6 ;7 8 9],第一列元素乘以1,第二列元素以2,第三列元素乘以4。
利用bsxfun函数,可以给出下列代码:
a = [1,2,3;
4,5,6;
7,8,9];
acol = bsxfun(@times,a,[1 2 4])
此处bsxfun函数将[1 2 4]扩展为3*3矩阵[1
2 4;1
2 4;1
2 4],每个元素与a中对应元素相乘。得到
[1 4
12
4 10
24
7 16
36]
[转]Matlab:用内建函数代替for循环_cairo_新浪博客
http://blog.sina.com.cn/s/blog_83b901bd0101ea8l.html
[转载]matlab学习笔记 函数bsxfun
repmat_yoki_新浪博客
http://blog.sina.com.cn/s/blog_780976a001012m0a.html
********************************************************************************************
arrayfun:
Apply function to each element of array
[B1,...,Bm] =
arrayfun(func,A1,...,An)
[B1,...,Bm] =
arrayfun(func,A1,...,An,Name,Value)
利用arrayfun函数可以避免无谓的循环,从而大大提高代码的简介性。
1、A=ARRAYFUN(FUN, B)
FUN是函数句柄,对B中的每一个元素调用FUN函数(计算顺序随意),结果存放于A中,size(A)==size(B)
FUN函数可接受numeric, logical, char, struct,
cell的自变量类型。
2、[A, B, ...] = ARRAYFUN(FUN, C, ...)
FUN函数的返回值是一个向量,对B中的每一个元素调用FUN函数,计算结果放在A,B…中。
3、 A = ARRAYFUN(FUN, B, C,...)
FUN函数接受参数不唯一,分别调用B, C,...中的元素,A(i,j...)=Fun(B(i,j...),C(i,j,...)...),
B,C...大小必须相等。
例1、Fun调用B中的一个数值
>> s=[1 2;3 4];
>> f=@(x) x^2;
>> arrayfun(f,s)
ans =
14
916
例2、Fun的接受参数是一个向量
>> ss=num2cell(s,2);
>> f=@(x) sum(x{:}.^2);
>> arrayfun(f,ss)
ans =
5
25
例3、Fun函数返回值是向量
>> F=@(x) x{:}.^2;
>>
cell2mat(arrayfun(F,ss,'UniformOutput',false))
ans =
14
916
例4、Fun函数参数不唯一
>> f=@(x,y) x^2+y^2;
>> [X,Y]=meshgrid(-2:2,-1:5);
>> Z=arrayfun(f,X,Y);
>> mesh(X,Y,Z)
例5、Fun函数的参数不唯一,而且都是向量
>>
F=@(f,h)sum(diff(f{:}).^2)+sum(diff(h{:}).^2);
>> f=[1,2,3;3,4,5;1,2,5];
>> h=[2,4;4,5;];
>> ff=num2cell(f,2);
>> hh=num2cell(h,2);
>> fff=repmat(ff',length(hh),1);
>> hhh=repmat(hh,1,length(ff));
>> arrayfun(F,fff,hhh)
ans =
6614
3311
C2=num2cell(A)是把A中的每一个元素作为cell的元素,这样每个元素是一个数;C2=num2cell(A,1)是把矩阵A的每一列作为cell的元素,这样cell的每个元素是一个列向量。同样的还有C2=num2cell(A,2)表示把A中的每一行作为一个cell元素
转自:
arrayfun用法_2096428102_新浪博客
http://blog.sina.com.cn/s/blog_7cf4f4460101bnhh.html
********************************************************************************************
cellfun:
1
2
[A1,...,Am] = cellfun(func,C1,...,Cn)
[A1,...,Am] = cellfun(func,C1,...,Cn,Name,Value)
和arrayfun的用法类似,不过是对cell的对应元素进行操作。
structfun:
1
2
[A1,...,An] =
structfun(func,S)
[A1,...,An] =
structfun(func,S,Name,Value)
类似的用法,对结构体S的所有域进行func操作。
spfun:
1
f = spfun(fun,S)
这个函数可以对一个稀疏矩阵S的每个有值的元素进行fun操作。
这个函数的用途不仅仅是可以提升速度,更重要的是能够保持返回的f中,没有数据的地方依然为0.
例如:
1
2
S = spdiags([1:4]',0,4,4)
f = spfun(@exp,S)
S =
(1,1) 1
(2,2) 2
(3,3) 3
(4,4) 4
f =
(1,1) 2.7183
(2,2) 7.3891
(3,3) 20.0855
(4,4) 54.5982
而直接运行
1
exp(S)
的话,没有数据的地方都变成1了。
1
full(exp(S))
ans =
2.7183 1.0000 1.0000 1.0000
1.0000 7.3891 1.0000 1.0000
1.0000 1.0000 20.0855 1.0000
1.0000 1.0000 1.0000 54.5982
matlab bsxfun memory,[转]matlab函数 bsxfunarrayfun相关推荐
- matlab bsxfun memory,matlab函数bsxfun浅谈(转载)
网上关于bsxfun的东西不多,今天需要看到一个,由于原博文插入的图片显示不出来,于是笔者大发善心进行了contrl+V 以及alt+ctrl+A的操作,供大家交流学习. bsxfun是一个matla ...
- matlab bsxfun memory,matlab之bsxfun函数
简单的调用方法: bsxfun(@plus,A,B),其中@plus代表的是加法,还可以换成减法@minus,乘法@times等,可以参考matlab里面的帮助文档,对着bsxfun按F1即可. 有何 ...
- matlab bsxfun memory,matlab – BSXFUN关于关系操作的内存效率
简介&测试设置 要执行内存测试以查询问题中提出的点,让我们定义输入A和B: A = rand(M,N) B = rand(1,N) 这里,M和N是大小参数,并保持为非常大的数字. 我会使用re ...
- Matlab bsxfun函数解析
bsxfun是一个matlab自版本R2007a来就提供的一个函数,作用是"applies an element-by-element binary operation to arrays ...
- Matlab bsxfun函数
bsxfun 两个数组间元素逐个计算. 语法: C=bsxfun(fun,A,B) 函数描述: 两个数组间元素逐个计算,fun是函数句柄或者m文件,也可以为如下内置函数 @plus ...
- matlab中trapz,MATLAB中trapz和cumtrapz函数
这两个函数都是MATLAB中的内置函数,是基于梯形法则的数值积分公式 例如我们有函数y=x^3-2x-3,为了计算在[0,1]上的积分,可以这么做: 其中x和y分别是自变量和对应的值,trapz其实就 ...
- 23. matlab并行计算原理以及parpool函数
声明: 因电脑问题, 只做记录,以后尝试. 出处: Matlab并行运算 - wenyusuran的专栏 - CSDN博客 https://blog.csdn.net/wenyusuran/arti ...
- matlab中非0即1函数,matlab 中统计一个数组中非零元素个素的函数名称是什么?
可以自己写一个函数用来给数组排序.或者用MATLAB自带的 Matlab 用sort函数排序 二维数组2008-09-14 22:51在Matlab中排序某个向量(一维)时,可以使用sort(A),其 ...
- matlab的guide怎么添加函数,整理:matlab如何添加m_map工具箱
之前安装过m_map工具箱但是一直出错,错误信息的主要内容是关于'没能找到目录下的函数文件',试了很长时间,发现原来是安装位置出现了问题,之前是安装在了'\toolbox\m_map',所以出错了,下 ...
最新文章
- Copy GAC DLL
- 算法入门开灯问题,新做法
- ARM硬件支持java技术Jazelle DBX
- QT Openssl no OPENSSL_Applink 解决
- Can't process attribute android:fillColor=@color/gray,添加vector属性报错解决方法
- 【干货】快速部署微软开源GPU管理利器: OpenPAI
- 这 5 条 IntelliJ IDEA 调试技巧太强了!
- 博图买什么样配置的笔记本_3dsmax需要什么样的笔记本配置?
- BAT 数据披露:缺人!110万AI人才缺口,两者矛盾,凉凉了!
- webapi mvc 基础
- Python - matplotlib 不显示中文 findfont: Font family [‘SimHei‘] not found - IOS
- sql与hsql的区别以及分别怎么用!
- 企业微信开发整理汇总
- mac修改eclipse的内存配置
- 电脑ping手机该怎么玩(很多网友都说电脑ping不通手机)
- 红​字​和​蓝​字​冲​销(红字冲正、蓝字冲正)
- sCrypt 合约中的椭圆曲线算法:第二部分
- pandas把一个excel的特定数据写到另一个excel_Python读写Excel文件第三方库汇总,你想要的都在这儿!...
- charles+Proxifier实现抓包pc端(exe程序)
- Speedoffice(PPT)如何做动画演示效果
热门文章
- 利用Echarts制作地图(一)
- 身份认证技术的产业发展
- vscode之 wget下载文件报错:ERROR: cannot verify data.vision.ee.ethz.ch‘s certificate
- 详解网络爬虫:网络爬虫是干什么的?有哪些应用场景?
- (数据库系统)(十二)故障恢复
- win10下如何使用的debug
- 天河三号是量子计算机吗,“天河三号”原型机亮相,排名有望继续世界第一
- IPV6 DHCPV6 和 无状态 分配地址
- 机器学习如何驱动业务实践?你想知道的都在这!
- word2vec(2) 背景知识