Мне нужно построить корни на передаточной функции H (z), накладываясь на единичный круг, давая достаточно места, чтобы увидеть все точки. Я могу получить корни из H(z), когда оно задано в виде нулей = [z0 z1 z2...], полюсов = [p0 p1 p2]. Используя функцию корней Matlab, я могу получить полюс и нулевое местоположение. Мой код Matlab до сих пор
function zplot(b, a)
b_roots = roots(b);
a_roots = roots(a);
hold on
rectangle('Position',[-1 -1 2 2],'Curvature',[1 1]);
plot(b_roots,'x blue');
plot(a_roots,'o blue');
axis %need axis to be equal and +10percent of maximum value
hold off
end
Пока что я могу построить корни и единичный круг, но мне нужна помощь в настройке осей, чтобы они были 1) равны друг другу и 2) на 10% больше, чем наибольшее значение. Я не уверен, как сделать эту часть. Я попытался создать переменную lim_max = max(b_roots,a_roots), но в итоге она оказалась массивом и не работала в функции axis([-lim_max lim_max -lim_max lim_max]). Мне нужно, чтобы график масштабировался до + 10% с входными данными по мере их изменения.
Примечание (не обязательно): есть ли способ, чтобы он выглядел как круг, когда я рисую его, потому что сейчас он в конечном итоге выглядит как овал большую часть времени. Я могу перенастроить экран, и это нормально, но есть ли простой способ сделать это, я также хотел бы знать.