diff --git a/src/Function1D.cpp b/src/Function1D.cpp index 717edeb..e13c33c 100644 --- a/src/Function1D.cpp +++ b/src/Function1D.cpp @@ -538,3 +538,15 @@ Matrix Aurora::vecnorm(const Matrix& aMatrix, NormMethod aNormMethod, int aDim) return Matrix::New(resultData,column); } + +Matrix Aurora::linspace(double aStart, double aEnd, int aNum) +{ + double step = (aEnd - aStart) / (aNum - 1); + double* resultData = Aurora::malloc(aNum); + for (int i = 0; i < aNum; i++) + { + resultData[i] = aStart + step * i; + } + + return Matrix::New(resultData,aNum); +} diff --git a/src/Function1D.h b/src/Function1D.h index c2aa2eb..15138ea 100644 --- a/src/Function1D.h +++ b/src/Function1D.h @@ -72,6 +72,8 @@ namespace Aurora { Matrix vecnorm(const Matrix& aMatrix, NormMethod aNormMethod, int aDim); + Matrix linspace(double aStart, double aEnd, int aNum); + /** * 多项式计算 * @brief 例如p[1 0 1],x[3 2 5],代表对多项式 y = x^2 + 1 求(x=3, x=2, x=5)时所有的y diff --git a/test/Function1D_Test.cpp b/test/Function1D_Test.cpp index d5d9d59..ea7d943 100644 --- a/test/Function1D_Test.cpp +++ b/test/Function1D_Test.cpp @@ -428,3 +428,14 @@ TEST_F(Function1D_Test, vecnrom) { EXPECT_DOUBLE_AE(result.getData()[0],9.5394); EXPECT_DOUBLE_AE(result.getData()[1],43.3474); } + +TEST_F(Function1D_Test, linspace) { + auto result = Aurora::linspace(-5,5,7); + EXPECT_DOUBLE_AE(result.getData()[0],-5); + EXPECT_DOUBLE_AE(result.getData()[1],-3.3333); + EXPECT_DOUBLE_AE(result.getData()[2],-1.6667); + EXPECT_DOUBLE_AE(result.getData()[3],0); + EXPECT_DOUBLE_AE(result.getData()[4],1.6667); + EXPECT_DOUBLE_AE(result.getData()[5], 3.3333); + EXPECT_DOUBLE_AE(result.getData()[6], 5.0000); +}