C 仿Matlab的bsxfun函式

2022-07-10 04:33:08 字數 1241 閱讀 7422

在opencv中實現了matlab的bsxfun函式,只實現了加法plus、減法minus,其它的太耗時,有感興趣的朋友也來做做,分享分享。

#include #include

#include

using

namespace

cv;using

namespace

std;

///*1. a,b都是單行,a、b的列數必須相同

2. a,b都是單列,a、b的行數必須相同

3. a是單行,b是單列,a的列數與b的行數可以不同。輸出為b.rows-by-a.cols矩陣。

4. a是單列,b是單行,a的行數與b的列數可以不同。輸出為b.rows-by-a.cols矩陣。

5. a是單行,b是多行多列或者單行多列,則如果a.cols==b.cols,輸出結果為b.rows-by-a.cols矩陣

6. a是單列,b是多行多列或者單列多行,則如果a.rows==b.rows,輸出結果為b.rows-by-a.cols矩陣

*/mat bsxfun(

string operation,const mat& a,const mat&b)

else

int arows=ta.rows,acols=ta.cols;

int brows=tb.rows,bcols=tb.cols;

int cols,rows;//

a、b尺度不一致時,輸出結果的尺度

if(arows==1&&bcols==1)//

3. a是行向量,b是列向量

else

if(acols==1&&brows==1)//

4. a是列向量,b是行向量

else

if(arows==1&&brows>1)//

5. 列數必須相等

else

if(acols==1&&bcols>1

)

if(swapsign)

if(operation=="

plus

") temp=ta+tb;

if(operation=="

minus

") temp=ta-tb;

return

temp;

}int

main()

執行結果如下:

matlab函式bsxfun的用法

舉個例子。假設我們有一列向量和一行向量。a randn 3,1 b randn 1,3 a 0.2453 0.2766 0.1913 b 0.6062 0.5655 0.9057 我們可以很簡單的使用matlab的外乘c a b 來得到,如圖 但如果我們想用 外加 呢?也就是說把上式求解過程中的乘號...

MATLAB中的bsxfun函式

bsxfun 函式的功能 兩個陣列間元素逐個計算的二值操作。函式使用方法 z bsxfun fun,x,y 兩個陣列x合y間元素逐個計算的二值操作,fun是函式控制代碼或者m檔案,也可以如下內建函式。常見的內建函式如下 plus 加 minus 減 times 陣列乘 rdivide 左除 ldiv...

matlab學習筆記 bsxfun函式

matlab學習筆記 bsxfun函式 最近總是遇到bsxfun這個函式,前幾次因為無關緊要只是大概看了一下函式體去對比結果,今天再一次遇見了這個函式,想想還是有必要掌握的,遂查了些資料總結如下。函式bsxfun 功能描述 兩個陣列間元素逐個計算.應用場合 當我們想對乙個矩陣a的每一列或者每一行與同...