# MATLAB: Embarrassingly Simple Help Needed

Ok. My brain is mush right now and I cannot seem to get this to work. I have a text file called 'xburned.dat' in the current directory that is a single column of data points that looks like this

Code:
9.91E-05
1.31E-04
1.38E-04
1.78E-04
2.31E-04
2.51E-04
2.81E-04
2.90E-04
3.01E-04
3.21E-04
3.41E-04
3.68E-04
4.57E-04
4.72E-04
5.01E-04
5.29E-04
5.56E-04
5.78E-04
5.85E-04
6.08E-04
6.21E-04
6.50E-04
6.68E-04
6.83E-04
7.10E-04
7.91E-04
8.30E-04
9.97E-04
1.13E-03
1.27E-03
.
.
.
I want to pick up the data in such a way that I have an array in which the rows are sets of 5 consecutive elements of xburned, i.e.:

Code:
9.91E-05 1.31E-04 1.38E-04 1.78E-04 2.31E-04
2.51E-04 2.81E-04 2.90E-04 3.01E-04 3.21E-04
.
.
.
I realize that there might not be a multiple of 5 of the data. In that case I can just truncate the data (i.e. just omit the last row that is < 5 points long).

This is my current code and it does not even come close ...

Code:
x_b = dlmread('xburned.dat');
len = length(x_b);
i = 1;
while(i < len-5)
k = 1;
for j = 1:5
points(k,j) = x_b(j,1);
end
i = i + 5;
k = k + 1;
end

Related MATLAB, Maple, Mathematica, LaTeX News on Phys.org
This could be done with http://www.mathworks.com/help/techdoc/ref/reshape.html". The following code is untested:

Code:
x_b = dlmread('xburned.dat');
n_rows = floor(size(x_b, 1)/5)); %number of rows in reshaped matrix
points = reshape(x_b(1:(n_rows*5)), n_rows, 5);

Last edited by a moderator:
This could be done with http://www.mathworks.com/help/techdoc/ref/reshape.html". The following code is untested:

Code:
x_b = dlmread('xburned.dat');
n_rows = floor(size(x_b, 1)/5)); %number of rows in reshaped matrix
points = reshape(x_b(1:(n_rows*5)), n_rows, 5);
Thank you MisterX I will look into reshape. I got my code to work, but reshape looks much cleaner.

Last edited by a moderator: