vectorize FRD feedback function by bnavigator · Pull Request #680 · python-control/python-control

This is a TODO from #314. It overlaps with #679 and one or the other needs a rebase after merge.

# frd_bench.py
from control import FrequencyResponseData, rss
import numpy as np

omega = np.logspace(-1, 4, 40000)

rss1 = rss(6,10,20,True)
rss2 = rss(6,20,10,True)

F1 = rss1(omega)
F2 = rss2(omega)

frd1 = FrequencyResponseData(F1, omega)
frd2 = FrequencyResponseData(F2, omega)

FB = frd1.feedback(frd2)
In [1]: from frd_bench import frd1,frd2

In [2]: %timeit -n 10 -r 3 frd1.feedback(frd2)
1.96 s ± 10.8 ms per loop (mean ± std. dev. of 3 runs, 10 loops each)
In [1]: from frd_bench import frd1,frd2

In [2]: %timeit -n 10 -r 3 frd1.feedback(frd2)
1.29 s ± 4.48 ms per loop (mean ± std. dev. of 3 runs, 10 loops each)