Understanding noise removal method using wavelets
Your signal (with initial par x0 =0.1) is already noise like and high frequency. It will be hard to distinguish it from the added white noise... One thing you can do is to interpolate (resample) the time series by a large enough factor and then later add the white noise. This will artifically help to separate the noise spectrum and your signal spectrum but the signal lengths will also be increased. whether it is what you have to do is up to you !
The following modification apparently improves the noise removal, but fundamentlaly it's separating the noise spectrum from the signal. So whether this is a viable option is upto your applications:
 M = 50;        % number of data points (length of the time series)
 
 x(1) = 0.5;    % initial condition (can be anything from 0 to 1)
 for n = 2:M,   % iterate
     x(n) = 4*x(n-1)*(1-x(n-1));
 end
 
 U = 10;       % interpolation factor 
 xU = resample(x,U,1);  % just interpolate the obtained sequence
 
 % add noise onto the interpolated sequence xU
 x_noise = awgn(xU , 10 , 'measured');

 %denoise using wavelet
 denoised = wdenoise(x_noise, 3,'Wavelet','db3',...
     'DenoisingMethod','Bayes',...
     'ThresholdRule','Median',...
     'NoiseEstimate','LevelIndependent');
 
 denoised = resample(denoised,1,U);   % downsample de-noised sequence back
 
 figure
 plot(x_noise(1:10:end))   % down-sample noisy seqeunce on the fly for displaying
 axis tight
 hold on
 plot(denoised,'r')
 plot(x,'c--');
 legend('noisy','denoised','clean');

 fb = cwtfilterbank('SignalLength',M);
 [cfs,frq] = wt(fb,denoised);

The result looks like :