MATLAB: Embarrassingly Simple Help Needed

  • #1
3,003
2
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
 

Answers and Replies

  • #2
760
69
Last edited by a moderator:
  • #3
3,003
2
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 :smile: I will look into reshape. I got my code to work, but reshape looks much cleaner.
 
Last edited by a moderator:

Related Threads on MATLAB: Embarrassingly Simple Help Needed

Replies
1
Views
2K
  • Last Post
Replies
1
Views
2K
  • Last Post
Replies
6
Views
4K
Replies
1
Views
3K
  • Last Post
Replies
2
Views
2K
  • Last Post
Replies
1
Views
2K
  • Last Post
Replies
2
Views
5K
Replies
1
Views
2K
Replies
1
Views
3K
  • Last Post
Replies
3
Views
7K
Top