Add xcorr function.
This commit is contained in:
@@ -735,6 +735,40 @@ Matrix Aurora::intersect(const Matrix& aMatrix1, const Matrix& aMatrix2, Matrix&
|
||||
return result;
|
||||
}
|
||||
|
||||
Matrix Aurora::xcorr(const Matrix& aMatrix1, const Matrix& aMatrix2)
|
||||
{
|
||||
//not support for complex
|
||||
if (aMatrix1.isNull() || aMatrix2.isNull() || aMatrix1.getDataSize() != aMatrix2.getDataSize())
|
||||
{
|
||||
return Matrix();
|
||||
}
|
||||
size_t matrixSize = aMatrix1.getDataSize();
|
||||
size_t resultSize = 2 * matrixSize -1;
|
||||
double* resultData = Aurora::malloc(resultSize);
|
||||
for(int i=0;i<matrixSize;++i)
|
||||
{
|
||||
double data = 0;
|
||||
for(int j=0;j<i+1;++j)
|
||||
{
|
||||
data+= aMatrix1[j] * aMatrix2[matrixSize-i-1+j];
|
||||
}
|
||||
resultData[i] = data;
|
||||
}
|
||||
|
||||
for(int i=0;i<matrixSize-1;++i)
|
||||
{
|
||||
double result = 0;
|
||||
for(int j=0;j<i+1;++j)
|
||||
{
|
||||
result+= aMatrix1[matrixSize-i-1+j]*aMatrix2[j];
|
||||
|
||||
}
|
||||
resultData[resultSize - 1 - i] = result;
|
||||
}
|
||||
|
||||
return Matrix::New(resultData,resultSize);
|
||||
}
|
||||
|
||||
Matrix Aurora::reshape(const Matrix& aMatrix, int aRows, int aColumns, int aSlices)
|
||||
{
|
||||
if(aMatrix.isNull() || (aMatrix.getDataSize() != aRows * aColumns * aSlices))
|
||||
|
||||
@@ -80,6 +80,8 @@ namespace Aurora {
|
||||
Matrix intersect(const Matrix& aMatrix1, const Matrix& aMatrix2);
|
||||
|
||||
Matrix reshape(const Matrix& aMatrix, int aRows, int aColumns, int aSlices);
|
||||
|
||||
Matrix xcorr(const Matrix& aMatrix1, const Matrix& aMatrix2);
|
||||
/**
|
||||
* 并集
|
||||
* @param aIa, [C,ia,~] = intersect(A,B)用法中ia的返回值
|
||||
|
||||
Reference in New Issue
Block a user