Error using surf (line 71) Data dimensions must agree

Hello,
I have the kind of problem with my code and I don't understand why:
for it=1:2
xt(it,1)=it
for jt=1:3
yt(1,jt)=jt
zt(it,jt)=it+(jt-1)
end
end
figure;
surf(xt,yt,zt,'EdgeColor', 'None', 'facecolor', 'interp');
view(2);
colormap(jet(256));
c = colorbar;
Could you help me to find my error please?
Thanks in advance!

Answers (1)

More like this?
for it=1:2
for jt=1:3
zt(it,jt)=it+(jt-1);
end
end
[x,y] = meshgrid(1:3,1:2);
figure;
surf(x,y,zt,'EdgeColor', 'None', 'facecolor', 'interp');
view(2);
colormap(jet(256));
c = colorbar;

4 Comments

I didn’t think xt and yt should be matrices too.
It works now, thank you!
@Hélène Parisot-Dupuis: xt and yt don't have to be matrices. If they are vectors, then zt must be of size numel(yt)-by-numel(xt). Your zt is of size numel(xt)-by-numel(yt), so if you transpose zt in the surf call, it runs without error.
for it=1:2
xt(it,1)=it;
for jt=1:3
yt(1,jt)=jt;
zt(it,jt)=it+(jt-1);
end
end
xt
xt = 2×1
1 2
yt
yt = 1×3
1 2 3
zt
zt = 2×3
1 2 3 2 3 4
figure;
surf(xt,yt,zt.','EdgeColor', 'None', 'facecolor', 'interp');
view(2);
colormap(jet(256));
c = colorbar;
Thank you very much for this clarification!

Sign in to comment.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!