I created a 2-D mesh using meshgrid. Now, I want to evaluate a function over this mesh based on the elements of mesh i.e., if the mesh elements are equal then evaluate expression1 else evaluate expression2.
a=linspace(1,2,2);b=linspace(1,3,3);[A,B]=meshgrid(a,b)fact(A,B,0.1)function f = fact(m,n,lam) if m==n f=m.*(n+2)+lam; else f=0; endend
The above just gives me the matrices A and B and 0 from the else statement. I want it to compare the elements of "m" and "n" and evaluate the "if" part if they are the same. I tried using bsxfun(@eq,m,n) instead of m==n. It gives the same result, 0 from the else part. Below is the output.
A = 1 2 1 2 1 2B = 1 1 2 2 3 3ans = 0
Instead, evaluating the following code (no if statement) over the mesh does give me the expected result of the function values over the entire mesh.
a=linspace(1,2,2);b=linspace(1,3,3);[A,B]=meshgrid(a,b)fact(A,B,0.1)function f = fact(m,n,lam) f=m.*(n+2)+lam;end
gives
A = 1 2 1 2 1 2B = 1 1 2 2 3 3ans = 3.1000 6.1000 4.1000 8.1000 5.1000 10.1000
The output I am looking for should look like
3.1000 00 8.10000 0
Best Answer