1
0
mirror of https://github.com/aportelli/LatAnalyze.git synced 2025-11-05 08:29:32 +00:00

2 Commits

Author SHA1 Message Date
b0782552d1 safer convolution 2025-06-27 15:58:47 +01:00
fef0f3704c step plot 2025-06-27 15:58:36 +01:00
3 changed files with 34 additions and 0 deletions

View File

@@ -511,6 +511,27 @@ PlotImpulses::PlotImpulses(const DVec &x, const DVec &y)
setCommand("'" + tmpFileName + "' u 1:2 w impulses");
}
// PlotSteps constructor ////////////////////////////////////////////////////
PlotSteps::PlotSteps(const DVec &x, const DVec &y)
{
if (x.rows() != y.rows())
{
LATAN_ERROR(Size, "x and y vector does not have the same size");
}
DMat d(x.rows(), 2);
string tmpFileName;
for (Index i = 0; i < x.rows(); ++i)
{
d(i, 0) = x(i);
d(i, 1) = y(i);
}
tmpFileName = dumpToTmpFile(d);
pushTmpFile(tmpFileName);
setCommand("'" + tmpFileName + "' u 1:2 w steps");
}
// PlotGrid constructor ////////////////////////////////////////////////////////
PlotGrid::PlotGrid(const DVec &x, const DVec &y, const DMat &value)
{

View File

@@ -191,6 +191,15 @@ public:
virtual ~PlotHistogram(void) = default;
};
class PlotSteps: public PlotObject
{
public:
// constructor
PlotSteps(const DVec &x, const DVec &y);
// destructor
virtual ~PlotSteps(void) = default;
};
class PlotImpulses: public PlotObject
{
public:

View File

@@ -38,6 +38,10 @@ void filterConvolution(MatType &out, const MatType &data,
{
Index n = data.rows(), nf = n*filter.size();
if (&out == &data)
{
LATAN_ERROR(Argument, "filter convolution does not support in-place operation");
}
out.resizeLike(data);
out.fill(0.);
for (unsigned int i = 0; i < filter.size(); ++i)