MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn moreOpportunities for recent engineering grads.

Apply Today
Asked by Gian Lorenzo on 6 May 2013

I am trying to visualize this function and eventually its contour lines:

clear all [x,y]=meshgrid(-10:0.1:10)

d=max([sqrt(x.^2+y.^2);sqrt((x-5).^2+(y+1).^2);sqrt((x-4).^2+(y-6).^2);... sqrt((x-1).^2+(y-3).^2)])+eps;

mesh(d)

I get an error message saying Z should be a matrix. I looked at the example here http://www.mathworks.com/help/matlab/ref/mesh.html, and I don't understand why their function generates a matrix and mine don't. Altough mine is a 'weird' function with a max it shouldn't be conceptually too different, what am I missing here?

Answer by Iman Ansari on 6 May 2013

Edited by Iman Ansari on 6 May 2013

Accepted answer

Hi.

clear [x,y]=meshgrid(-10:0.1:10)

d=max(sqrt(x.^2+y.^2),sqrt((x-5).^2+(y+1).^2)); d=max(d,sqrt((x-4).^2+(y-6).^2)); d=max(d,sqrt((x-1).^2+(y-3).^2))+eps;

mesh(x,y,d)

OR

meshc(x,y,d)

Gian Lorenzo on 6 May 2013

Thanks! Can you explain me what's the wrong reasoning I am doing here? Does the max function handles at most two arguments? Is eps strictly necessary?

Iman Ansari on 6 May 2013

From Help: If A is a matrix, max(A) treats the columns of A as vectors, returning a row vector containing the maximum element from each column.

Your input in max function is 804*201, so output become 1*201.

No.

Answer by Walter Roberson on 6 May 2013

d=max( cat(3, sqrt(x.^2+y.^2), sqrt((x-5).^2+(y+1).^2), sqrt((x-4).^2+(y-6).^2), sqrt((x-1).^2+(y-3).^2)), 3) + eps;

## 0 Comments