# "Data dimensions must agree" Error

11 views (last 30 days)

Show older comments

[code]im = im2double(imread('rice.png'));

[X Y]= meshgrid(1:size(im,1),1:size(im,2));

surf(zeros(size(im)),X,Y,im,'EdgeColor','none');[/code]

when i run this script it worked me fine but when i tried to change the image to RGB image it gives me this 2 errors

??? Error using ==> surf at 78 Data dimensions must agree.

Error in ==> CoOrdinating at 6 surf(zeros(size(im)),X,Y,im,'EdgeColor','none');

i tried to convert the image to grayscale but it didn't work with me and gave me the same errors

any help ?

##### 3 Comments

Jan
on 14 May 2011

Please post the Matlab code. Bugs in the code cannot be found in a text description of the method.

### Accepted Answer

Andrew Newell
on 15 May 2011

Here is a demo that works:

rgb_img = imread('ngc6543a.jpg');

imshow(rgb_img)

I = .2989*rgb_img(:,:,1)...

+.5870*rgb_img(:,:,2)...

+.1140*rgb_img(:,:,3);

figure;

imshow(I)

I = double(I);

[X,Y]= meshgrid(1:size(I,1),1:size(I,2));

figure;

surf(zeros(size(I')),X,Y,I','EdgeColor','none');

colormap('gray')

Probably you didn't take the transpose of I in the surf command. I don't know why you need to do this, but you do.

##### 2 Comments

Walter Roberson
on 15 May 2011

Taking the transpose or not would be the difference between using meshgrid() or using ndgrid().

>> size(meshgrid(1:2,1:3))

ans =

3 2

>> size(ndgrid(1:2,1:3))

ans =

2 3

### More Answers (3)

Andrew Newell
on 14 May 2011

If you enter the command

I = imread('rice.png');

you get a matrix. If you enter

I = imread('ngc6543a.jpg');

you get a 3D array with one page for each of the R, G and B components of the color. This does not have the same dimensions as the matrices X and Y.

##### 2 Comments

Walter Roberson
on 16 May 2011

Amr, I am not sure whether you are still having difficulty with this matter?

guj
on 15 May 2011

am also stuck in same thing I have samples point of 5:5:85 missing samples ..so i have 17 numbers which i have chosen has missing %.

so my vector is of length 17 by 1

Number of iteration = 500;

number of iteration carried out for reconstruction is 500 but 100 seems to be enough...so i have just zeros after 100 row my matrix is 500 by 17 in my error)matrix

I am using [X,Y]=meshgrid(iteration,missing sample) surf(X,Y,errormatrix(1:100,:))

But i am getting error...

whole objective is to show 3d graph having iteration on one axis, missing % of samples on other axis and error on the third one

This is what i am doing

[X,Y]=meshgrid(x,y) x=1 by 17 (decimation factors) y=1 by 100 (number of iteration)

errormatrix=[100 by 17] whch shows error during 100 iteration for each decimation %.

now surf(X',Y,errormatrix(1:100,:))

Error dimension at 78

##### 1 Comment

Andrew Newell
on 15 May 2011

Alexandra Roxana
on 18 Jul 2021

Hello! I'm having the same problem. I want to plot the results from the following code:

clc

clear all

alpha = 2;

L=50;

dx = 1;

dt = (dx^2)/(4*alpha);

gamma = (alpha*dt)/(dx^2);

itert = 1000;

u=zeros(itert,L,L);

uinit = 0;

utop=1;

uleft=0;

ubottom=0;

uright=0;

%Boundary conditions

u(:,L,:)=utop;

u(:,:,1)=uleft;

u(:,1,1)=ubottom;

u(:,:,L)=uright;

for k=1:itert-1

for i=2:L-1

for j=2:L-1

u(k+1,i,j) = gamma*(u(k,i+1,j) + u(k,i-1,j) + ...

u(k,i,j+1) + u(k,i,j-1) - 4*u(k,i,j)) + u(k,i,j);

end

end

end

%display(u)

[x,y]=meshgrid(0:.01:pi);

mesh(x,y,u)

##### 8 Comments

Alexandra Roxana
on 18 Jul 2021

### See Also

### Categories

### Community Treasure Hunt

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

Start Hunting!