In order it will sound reasonable and Signal Processing domain logically correct,
you need your Zero Forcing Equalizer filter or generally calling it academically correctly : channel adjustment filter to catch the channel properties (to estimate channel parameters) and to be as close as possible to the channel transfer function. Please review your paper logic. In your specific case the ZFE(z) = 1/channel_tf(z);
[b_chan,a_chan] = butter(n_butter, Wn_butter)
The magic is in scrolling:
zf_kTb = x_rc_ch(Pr_minus_N2:sps:Pr_plus_N2); % Scrolling Rx signal
I found correction to your observations:
You wrote:
"But for the second figure, when the whole discretized pulse from the Rx signal goes through the same ZFE filter, it doesn't get equalyzed back to something like the Tx signal, it just gets a little bit bigger on the peak."
in fact if you mean x_rc_ch_zf, it becomes expanded (spreads, broadens, bolsters) in time domain.
For it you need to modify Ck_zf which you convolve with.
So in frequency domain we need to correct / narrow(shrink, de-broad) it
fck = fft(Ck_zf)
n1 = length(fck);
v = (0:1:n1-1);
Narrow_factor = some_function(span,sps,filter_design);
Ck_zf_s_narrowed = ifft(fck'.*narrow_factor,'symmetric');
x_rc_ch_zf = conv(x_rc_ch, Ck_zf_s_narrowed, 'same');
Or even more elegant solution is to better modify the parameters when you desgin your filter initially and then you will not need to make computation fft and ifft operations:
Where you design the filter:
zf_kTb = x_rc_ch(Pr_minus_N2:sps:Pr_plus_N2); % Scrolling Rx signal
% to get kTb points (integer multiples"k" of symbol time"Tb")
zf_kTb = zf_kTb';
zf_Pr_row = zf_kTb(1:round(length(zf_kTb)/2));
zf_Pr_row = zf_Pr_row(end:-1:1); % Getting Pr[0] to Pr[-2N] vector
zf_Pr_col = zf_kTb(round(length(zf_kTb)/2):end); % Getting Pr[0] to Pr[2N] vector
Pr = toeplitz(zf_Pr_col, zf_Pr_row); % With kTb points we can build Toeplitz Matrix
Po = zeros(round(length(zf_kTb)/2), 1); % Creating Po vector to force neighbour pulses to 0
Po(round(length(Po)/2)) = 1;
Ck_zf = inv(Pr)*Po; % Calculating ZFE filter coefficients
More signal processing analysis I can do if you hire me
It is a part of some larger digital communication system, which?