I also just realized how easy it is to call this function using Pycall as an alternative solution:
filty = pyimport("scipy")
firls = filty.signal.firls
Followed by code similar to the MATLAB approach:
center_freq = 20
filter_frequency_spread_wide = 10
ffrequencies = [
0,
(1-transition_width)*(center_freq-filter_frequency_spread_wide),
(center_freq-filter_frequency_spread_wide),
(center_freq+filter_frequency_spread_wide),
(1+transition_width)*(center_freq+filter_frequency_spread_wide),
nyquist,
]/nyquist
idealresponse = [ 0 0 1 1 0 0 ]
filterweightsW = (firls(201,ffrequencies,idealresponse))
plot((ffrequencies*nyquist),idealresponse[:])
fft_filtkern = abs.(fft(filterweightsW))
fft_filtkern = fft_filtkern./maximum(fft_filtkern) # normalized to 1.0 for visual comparison ease
hz_filtkern = range(0,nyquist, length=101)
plot!(hz_filtkern,fft_filtkern[1:ceil(Int,length(fft_filtkern)/2)],color=:black)
