# Z must be a matrix, not a scalar or vector

3 views (last 30 days)
Mike on 26 Mar 2014
Commented: Mike on 26 Mar 2014
Hello,
I have run into this problem concerning a code i am writing to find a solution via the Monte Carlo method. Trying to plot my results on a meshgrid or surface, but i keep running into the Z must be a matrix issue. Can anyone spot my problem and give some advice on how to fix it?
Thanks
clear;
clc;
%--Number of simulations--%
n = 100;
sol = linspace(0,1,n);
y = zeros(1,n);
x = zeros(1,n);
%--Plot of the circle--%
figure(1)
clf;
syms p
bc = sin (p);
bc2 = cos (p);
Range = [0 2*pi];
subplot(211);
h = ezplot(bc,bc2,[Range]);
hold on
[X,Y] = meshgrid(-1:0.1:1);
%
Nsamples = 5;
distance = zeros(n,Nsamples);
circle = zeros(n,Nsamples);
delta = 0.1;
% for loop2 = 1:Nsamples
for t=1:n
%--Monte Carlo Random Walk--%
monte = randi(4,1);
if monte == 1
y = y + delta;
elseif monte == 2
y = y - delta;
elseif monte == 3
x = x + delta;
elseif monte ==4
x = x - delta;
end
%--Applying BC if sin is btween pi and 2pi--%
%--Applying it by not allowing y >= 0--%
if y < 0
y = 0;
end
%--Solving for radius to see if BC's are hit--%
%--Calculating Theta for the BC--%
theta = atan(y./x);
%--Calcuating the solution with BC's--%
sol = sin(theta);
sol = 0;
end
%--Plotted walk on a circle plot--%
subplot(211);
plot(x,y,'.b');
sol;
theta;
%--Plotting Surface of Solution--%
figure(2)
mesh(X,Y,sol)
end

Mike Hosea on 26 Mar 2014
It's telling you that the variable "sol" is a vector, whereas X and Y are matrices. If you want to plot a set of points on a surface, for every (X(i,j),Y(i,j)) pair the "mesh" function needs a Z(i,j), but that isn't provided by the sol vector. In fact, I don't see any connection at all between sol and the X and Y arrays.
Mike on 26 Mar 2014
Yeah, that makes sense. What i'm trying to do it plot the sol on a surface of an x and y range. That's what i thought i was doing, what would i need to change in order to do that?