在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的每一列或者每一行與同...