В настоящее время у меня есть векторное поле, которое выглядит примерно так, сгенерированное со следующей базовой структурой, где Z - некоторая матрица:
[X,Y] = meshgrid(x,y)
[grad_x, grad_y] = gradient(Z)
quiver(X,Y,grad_x,grad_y)
![enter image description here](https://i.stack.imgur.com/t2iTn.png)
Я бы хотел, чтобы этот график был изменен таким образом, чтобы ось x составляла от 1,5 до 3,8, а ось Y - от 100 до 250, но чтобы сами стрелки выглядели одинаково.Единственным отличием на рисунке должны быть метки осей.
Я пытался:
grad_x_rescaled = [(grad_x - min(grad_x))./(max(grad_x)-min(grad_x))].*(3.8-1.5);
grad_y_rescaled = [(grad_y - min(grad_y))./(max(grad_y)-min(grad_y))].*(250-100);
Но проблема в том, что хотя grad_x и grad_y масштабируются в целом, масштабирование самих стрелок относительно друг друга не сохраняется, ирезультаты приведены ниже (обратите внимание, что толстые черные полосы предположительно являются наконечниками стрел, но важно то, что направление и относительные размеры стрелок не совсем такие, как в первом случае. ![enter image description here](https://i.stack.imgur.com/EQ6Mu.png)
Существует ли функция matlab или выражение для перенормировки данных в новый диапазон, но такие, что перенормированные данные масштабируются относительно себя (например, стрелки должны масштабироваться одинаково по отношению друг к другу)?