matlab学习笔记 函数bsxfun repmat

来源:互联网 发布:知乎南方采暖方式 编辑:程序博客网 时间:2024/06/05 15:39

函数bsxfun

【功能描述】两个数组间元素逐个计算.

【应用场合】当我们想对一个矩阵A的每一列或者每一行与同一个长度相等的向量a进行某些操作(比较大小,乘除等)时,我们只能用循环方法或者利用repmat函数将要操作的向量a复制成和A一样尺寸的矩阵,进而进行操作。从MATLAB R2007a开始,再遇到类似的问题时,我们有了简洁高效的方法,即利用bsxfun函数。
【函数描述】C=bsxfun(fun,A,B):两个数组间元素逐个计算,fun是函数句柄或者m文件,也可以为如下内置函数 
         @plus 加 
         @minus 减 
         @times 数组乘 
         @rdivide 左除 
         @ldivide 右除 
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])

 

 

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矩阵。

B=repmat(A,m,n):把矩阵A复制n*m份,并堆叠构成矩阵B,矩阵B的大小为[size(A,1)*m, size(A,2)*n]。

 

0 0
原创粉丝点击