Add horzcat and horzcat's unittest.
This commit is contained in:
@@ -488,3 +488,22 @@ Matrix Aurora::transpose(const Matrix& aMatrix)
|
|||||||
|
|
||||||
return Matrix::New(resultData,col,row,1,aMatrix.getValueType());
|
return Matrix::New(resultData,col,row,1,aMatrix.getValueType());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Matrix Aurora::horzcat(const Matrix& aMatrix1, const Matrix& aMatrix2)
|
||||||
|
{
|
||||||
|
if(aMatrix1.isNull() || aMatrix2.isNull() || aMatrix1.getDims() !=2 || aMatrix2.getDims() !=2 ||
|
||||||
|
aMatrix1.getDimSize(0) != aMatrix2.getDimSize(0) || aMatrix1.getValueType() != aMatrix2.getValueType())
|
||||||
|
{
|
||||||
|
return Matrix();
|
||||||
|
}
|
||||||
|
int column1 = aMatrix1.getDimSize(1);
|
||||||
|
int column2 = aMatrix2.getDimSize(1);
|
||||||
|
int row = aMatrix1.getDimSize(0);
|
||||||
|
size_t size1= aMatrix1.getDataSize();
|
||||||
|
size_t size2= aMatrix2.getDataSize();
|
||||||
|
double* resultData = Aurora::malloc(size1 + size2,aMatrix1.getValueType());
|
||||||
|
cblas_dcopy(size1, aMatrix1.getData(), 1, resultData, 1);
|
||||||
|
cblas_dcopy(size2, aMatrix2.getData(), 1, resultData + size1, 1);
|
||||||
|
|
||||||
|
return Matrix::New(resultData, row, column1+column2, 1, aMatrix1.getValueType());
|
||||||
|
}
|
||||||
|
|||||||
@@ -68,6 +68,8 @@ namespace Aurora {
|
|||||||
|
|
||||||
Matrix transpose(const Matrix& aMatrix);
|
Matrix transpose(const Matrix& aMatrix);
|
||||||
|
|
||||||
|
Matrix horzcat(const Matrix& aMatrix1, const Matrix& aMatrix2);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 多项式计算
|
* 多项式计算
|
||||||
* @brief 例如p[1 0 1],x[3 2 5],代表对多项式 y = x^2 + 1 求(x=3, x=2, x=5)时所有的y
|
* @brief 例如p[1 0 1],x[3 2 5],代表对多项式 y = x^2 + 1 求(x=3, x=2, x=5)时所有的y
|
||||||
|
|||||||
@@ -342,3 +342,29 @@ TEST_F(Function1D_Test, transpose) {
|
|||||||
EXPECT_DOUBLE_EQ(result.getDimSize(0),2);
|
EXPECT_DOUBLE_EQ(result.getDimSize(0),2);
|
||||||
EXPECT_DOUBLE_EQ(result.getDimSize(1),3);
|
EXPECT_DOUBLE_EQ(result.getDimSize(1),3);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST_F(Function1D_Test, horzcat) {
|
||||||
|
double *data1 = new double[6]{1,2,3,4,5,6};
|
||||||
|
auto matrix1 = Aurora::Matrix::fromRawData(data1, 3,2);
|
||||||
|
double *data2 = new double[9]{7,8,9,10,11,12,13,14,15};
|
||||||
|
auto matrix2 = Aurora::Matrix::fromRawData(data2, 3,3);
|
||||||
|
auto result = Aurora::horzcat(matrix1,matrix2);
|
||||||
|
EXPECT_DOUBLE_EQ(result.getData()[0],1);
|
||||||
|
EXPECT_DOUBLE_EQ(result.getData()[1],2);
|
||||||
|
EXPECT_DOUBLE_EQ(result.getData()[10],11);
|
||||||
|
EXPECT_DOUBLE_EQ(result.getData()[14],15);
|
||||||
|
EXPECT_DOUBLE_EQ(result.getDimSize(0),3);
|
||||||
|
EXPECT_DOUBLE_EQ(result.getDimSize(1),5);
|
||||||
|
|
||||||
|
data1 = new double[6]{1,2,3,4,5,6};
|
||||||
|
matrix1 = Aurora::Matrix::fromRawData(data1, 3,1,1,Aurora::Complex);
|
||||||
|
data2 = new double[6]{7,8,9,10,11,12};
|
||||||
|
matrix2 = Aurora::Matrix::fromRawData(data2, 3,1,1,Aurora::Complex);
|
||||||
|
result = Aurora::horzcat(matrix1,matrix2);
|
||||||
|
EXPECT_DOUBLE_EQ(result.getData()[0],1);
|
||||||
|
EXPECT_DOUBLE_EQ(result.getData()[1],2);
|
||||||
|
EXPECT_DOUBLE_EQ(result.getData()[8],5);
|
||||||
|
EXPECT_DOUBLE_EQ(result.getData()[9],6);
|
||||||
|
EXPECT_DOUBLE_EQ(result.getDimSize(0),3);
|
||||||
|
EXPECT_DOUBLE_EQ(result.getDimSize(1),2);
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user