I am using Matlab to take the FFT of a series of pulses. Can anyone explain why there are multiple humps at high frequencies rather than a smooth roll-off?
If I read the plot correctly, I see tones repeating every 1 MHz, 3MHz, 5MHz, etc under the envelope of a $Sinc^2$ function with nulls every 200 MHz and an overall sampling rate of 2 GHz (You further clarified 10 GHz, so the full digital spectrum must not be shown?). That envelope can be the result of a 10 ns triangular pulse, and given the repetition rate, consistent with the plus minus pattern you described repeating every 1MHz.
Please include a zoom-in of the time domain of your waveform, specifically over a 50 ns time span showing the discrete samples. This will further clarify if this theory is correct of if you are also being affected by a zero-order hold.
Here is a plot of showing the frequency response of [1 1 1 1 1 1 1 1 1 1] convolved with itself, thus creating a triangular pulse 10 ns wide at a 2 GHz sampling rate), which is a $Sinc^2$. The same result can be achieved at the 10 GHz sampling rate; being simply discrete samples of a 5 ns rectangular pulse - which result in a Sinc function in frequency with nulls at 200MHz spacing; since we see from the frequency roll-off in your plot what would be a $Sinc^2$ function, then two rectangular pulses each 5 ns wide convovlved in time (resulting in 10 ns triangular pulses) would then give the $Sinc^2$ function achieved:
Generally, you can determine the Fourier Transform of any repeating pattern by using the Fourier Transform of the base pattern as the envelope (in your case the triangle waveform which results in the $Sinc^2$ response as the envelope) and then within that envelope, due to the signal repetition, the only non-zero frequency components that can only exist will be at integer multiples of the repetition rate of the base pattern (I explain this in detail in another response and will update this with the link to that if I can find it). In your case it is further complicated by a positive triangle wave followed by a a negative triangle wave as your "base pattern" that repeats at the 1 MHz rate. To get the resulting envelope in this case, this can be easily conceptualized by first passing your triangle wave through a comb filter response as shown in the plot below (The comb filter is a delay of 500 ns and a subtraction resulting in nulls at DC, 2 MHz, 4 MHz etc). Thus the original $Sinc^2$ envelope now has nulls at DC, 2 MHz, 4 MHz. When you repeat this base pattern at the 1 MHz rate, this would result in tones every 1 MHz, except the even ones are nulled due to the effect of the comb filter.
In the plot below, this process is shown both in the time domain and the associated response in the frequency domain for each portion of this process as previously described.
So with all that said, as long as your triangle pulses are 10 ns and not the 50 ns you first stated, the FFT you show is how it should look and not a problem with your settings. However you may want to consider windowing your signal prior to taking the FFT to reduce the sidelobes shown on each of the tones (that are an artifact of the FFT when windowing is not used). This will reduce the width of each "tone" but substantially reduce the sidelobes.