MATLAB Answers

0

How to find the (x,y) combinations that make z=0?

Asked by Franziska on 16 Sep 2019
Latest activity Edited by Kevin Phung on 18 Sep 2019
Hi Everyone
I have a matrix Z(i,j) that is a function of X and Y. Surface and contour plot look fine, but are difficult to interpret.
Is there a way to plot a function of X and Y , such that Z is equal to zero (or as close to zero as possible, since non of the elements in the Z matrix is actually zero)? What I'd like to find out is for which combinations of X and Y the Z-value is above and below zero.
My code is very long, but I did something like this to get matrix Z:
X=linspace(a,b)
Y=linspace(c,d)
for i = 1:numel(X)
Z(:,i) = functionZ(X(i))
%Functionhandle functionZ:
Z(j) = %functionZ(X)
Y=linspace(c,d)
for j = 1:numel(Y)
Z(j)= %function with parameter X
end
end
thanks in advance for any tips!

  2 Comments

Is there a way to plot a function of X and Y , such that Z is equal to zero
But you say you've looked at contour plots. Shouldn't this already be given to you by the zero isocontour?
It does, but it does not give me the 'exact' zero-isocontour, and the contour plot is difficult to interpret, since there is one extreme peak. what I am looking for is a good way to report the result, that is the XY values for which Z is above / below zero.
Edit: Found a way:
to find the iso-countourline for Z=0
v=[0,0]
contour(X, Y, Z, v)
Thanks so much for giving me the crucial hint!

Sign in to comment.

2 Answers

Answer by Kevin Phung on 16 Sep 2019
Edited by Kevin Phung on 18 Sep 2019
 Accepted Answer

Correct me if I am misinterpreting your goal:
You have a function z(x,y).
You are trying to find the values of x and y that give you some particular values of Z, in this case very close to 0. You can try something like this:
% define some condition for Z values, in this case I want to look for all Z values in my
% Z matrix that are between 0 and 0.001.
% find() those values, and use ind2sub in order to grab the [row,col] pairs.
[x_ind,y_ind] = ind2sub(size(Z),find(and(Z=<0.001,Z>0 )));
xy_pairs = [X(x_ind) Y(y_ind)] % this will give you the x and y pairs
edit: you have already accepted my answer, but I forgot to include an '=' sign

  0 Comments

Sign in to comment.


Answer by Matt J
on 16 Sep 2019

  0 Comments

Sign in to comment.