Beginner question on aperiodic samples and DFT behavior I have a strongly aperiodic signal and I get weird artifacts after running a fft, using a low-pass filter, and then doing an inverse fft.  I believe the artifacts are due to the way the signal is assumed to be periodic and "wrapped" at the ends. (Like I said, I'm a complete beginner here.)

I understand the usual way of handling aperiodic signals is via a window function, but applying a window function (say, Hamming) to my data looks like it squishes the data too much and like it would generate worse artifacts.

What sort of seems like it works is to 


surround the signal with silence, by prepending and appending a segment of 0s,
doing the fft, applying the filter, etc., and then inverting the fft, then
clipping off the silence segments off the beginning and end.


The result of step 1 looks like applying a rectangular window function to a longer signal, so I think that's ok, but...


Is what I'm doing in any way reasonable?
If so, what are the effects? And what is the best way to determine the length of the segments of 0s? (Currently, 10% of the original signal seems like it's not bad.)
If not, is there another way to do this?
It sounds to me like you are experiencing time-domain aliasing. First, two basic facts:


Recall that if $x[n]$ is of length $N$ and $h[n]$ is of length $M$ then $x[n]\ast h[n]$ is of length $N+M-1$. 


Fact 1 does not matter in what domain you perform the convolution/filtering. So, if you modify the DFT of $x[n]$ by "shaping" its spectrum, then there exists an  equivalent filter $h[n]$ in the time domain, which defines an implicit length $M$. 


Taking an $N_1$-point IDFT of an $N_2$-point signal for $N_1 &lt; N_2$ results in time-aliasing.


Fact 2 is the dual to frequency aliasing by undersampling. I'll illustrate this as follows: let $x_1[n]$ denote a signal of size $N_1$. Then, if we take an $N_1$-point DFT of $x_1$ and modify its spectrum so the size should be $N_2&gt;N_1$, then taking an $N_1$-point IDFT is equivalent to obtaining the signal $x_2$ given by: 
\begin{eqnarray}
x_2[n] = \sum_{p=0}^{\infty}x[n+pN_1]
\end{eqnarray}

This seems to be consistent with what you have mentioned. As you correctly noted, zero padding the original signal is exactly the solution! Essentially just zero-pad such that the terms in the above equation for $p&gt;0$ are all zero-valued. Also, using the ideas above gives you a way to understand the exact amount of zero-padding necessary based on the implicit filter $h[n]$ your frequency domain shaping yields. Good luck!