Add xcorr function.

This commit is contained in:
sunwen
2023-05-18 11:42:48 +08:00
parent 88e1052992
commit a1e359231e
2 changed files with 36 additions and 0 deletions

View File

@@ -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))

View File

@@ -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的返回值