Как найти x-пересечение сюжета в Matlab - PullRequest
0 голосов
/ 02 апреля 2012

Я знаю, что должен быть действительно простой ответ на этот вопрос, но я просто не могу его найти.(Думаю, я, вероятно, гуглю неправильные термины.)

Я строю некоторые данные в Matlab, используя функцию plot (x, data) .

Я хочунайти точку пересечения (х) линии, т. е. точку (точки), где у = 0.

В некоторых случаях может оказаться, что вектор data на самом деле несодержат значения, равные нулю, поэтому дело не только в том, чтобы найти индексы элементов в data , которые равны нулю, а затем найти соответствующие элементы в векторе x .

Как я уже сказал, это действительно простая проблема, и я думаю, что в Matlab уже есть встроенная функция ...

Спасибо за вашу помощь.

Ответы [ 2 ]

2 голосов
/ 03 апреля 2012

Если вы хотите найти X-перехват как интерполяцию между двумя ближайшими точками вокруг осей X, вы можете использовать функцию INTERP1:

x0 = interp1(y,x,0);

Это будет работать, если x и y монотонно увеличиваются /уменьшение.

0 голосов
/ 03 апреля 2012
x=-1.999:0.001:1.999;
y=(x-1).*(x+1); 
plot(x,y) 
hold on
plot(x,zeros(length(x),1),'--r') 
find(abs(y)<1e-3)

Таким образом, последняя часть гарантирует, что даже если нет точного y-пересечения, вы все равно получите значение закрытия.Результатом этого кода являются индексы, которые удовлетворяют условию.

...