MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

# X Y Z Surface Plot Problem

Asked by Bora Tek on 20 Apr 2012

Hello Friends,

I need your assistance about plotting x y z axis surface graphic

I have tunnel data on excel; Tunnel lenght, Temperature, Time

I want to show these datas on matlab

here is my datas

http://speedy.sh/sTARC/Matlab-icin.xlsx

Thank you so much

## Products

No products are associated with this question.

Answer by Matt Tearle on 20 Apr 2012
```data = xlsread('filename.xlsx');  % read in everything (numeric)
t = data(1,2:end);                % first row (except first element)
l = data(2:end,1);                % first column (except first element)
temp = data(2:end,2:end);         % actual data in the table
surf(t,l,temp)                    % make surface plot
```

Bora Tek on 20 Apr 2012

Thank you so much Matt Tearle :)

I'm a rookie on matlab by the way :)

Matt Tearle on 20 Apr 2012

Welcome. No problem, we all start somewhere :)

Answer by Bora Tek on 20 Apr 2012

Thank you so much for your help Matt, This link will help me im sure :) I have one more question, can i change x axis position with y axis? if i can do that, do i have to change my excel data? i want to show my datas like this.

Thank you

## 1 Comment

Matt Tearle on 23 Apr 2012

You mean exchange the x and y axes? Yes, just transpose your data matrix:

temp = data(2:end,2:end)';
surf(l,t,temp)

Answer by Bora Tek on 29 Apr 2012

Hi Matt,

I changed the code as you said;

```data = xlsread('sıcaklık100mw.xlsx');
t = data(1,2:end);
l = data(2:end,1);
temp = data(2:end,2:end);
surf(l,t,temp)
```

But i got this error message:

```Error using surf (line 75)
Data dimensions must agree.
```

## 1 Comment

Matt Tearle on 30 Apr 2012

Note the transpose operator (') at the end of the command temp = data(2:end...

temp is a matrix with m rows and n columns. When making a surface plot, the m rows are taken to be the values at m y locations; the n columns are taken to be the values at n x locations. So when you do surf(x,y,temp), the x vector should have n elements, and y should have m elements. To switch x and y, you need to flip (transpose) the matrix *and* the x and y vectors in the surf command.