MATLAB-saving data after loops for surf plot

  • Context: MATLAB 
  • Thread starter Thread starter RicciFlow
  • Start date Start date
  • Tags Tags
    Data Loops Plot
Join the discussion
Ask a follow-up here, or get your own question answered by working scientists, mathematicians and engineers — people, not an autocomplete.
Real named experts · corrections over time · the nuance an AI answer skips
3 replies · 7K views
RicciFlow
Messages
15
Reaction score
0
Hi everyone, it has been a while since I used MATLAB, and I find myself in need of something that I hope is rather simple. I am making a surface plot of a function that is a little odd. To plot said function I would normally use meshgrid or something, but that will not work thanks to my function.
So instead I am running it through a nested for loop and I want to just store the data after each iteration into a matrix that I can plot using surf. But I cannot seem to remember how to correctly do this.
Here's my code.

Code:
clear
clc
Z=0;
for x=-10:.5:10;
    for t=-10:.5:10;
        z=Om(x, t);
        Z=[Z z];
    end
end
figure;
surf(Z);

I imagine I am doing something very sill here but I am not sure. I get a horzcat error at Z=[Z z]. Thanks in advance! :)
 
on Phys.org
Im not sure what Om is, but to save results into a matrix after each loop you should use the matrix notation eg z(:,1), z(t), z(1,t) etc depending on what you want to save.

What are you doing in the Om and [Z z] bits?
 
clear
clc
Z=0;
for i=1:41;
x(i)=-10.5+(0.5*i);
for j=1:41;
t(j)=-10.5+(0.5*j);
z(i,j)=x(i)*t(j);

end
end
%Z(i,j)=[Z,z];
disp(z)
figure;
surf(z);

I was just playing around with your code and i could get this.
I don't know if this was what you wanted although.
 
The problem here is that your variable Z is a vector, not a matrix. The easiest way to do what you need to do, I think, would be to generate a matrix of (x,t) values in advance, and then pass the whole matrix (component-wise) into the function.