How to store a variable no. of data points in a matrix?

3 views (last 30 days)
Hello everyone. The question is..suppose i am using a for loop. At the end of each loop it is giving me a data point only if a certain condition is satisfied otherwise not. I want to store these data points in a k*2 matrix where value of k depends on the condition being satisfied or not.So the no. of data points generated is not previously known. Is is possible to store the data points in a matrix if we dont know the exact dimension of the matrix at the first place?? Please help! Thanx!!

Accepted Answer

Jan
Jan on 18 Jan 2014
Create the output with a maximum size at first to avoid the extremely time-consuming iterative growing of an array:
data = zeros(N, 2);
index = 0;
for k = 1:N
if FLAG % Apply your condition here
index = index + 1;
data(index, 1:2) = rand(1,2); % Your values to be stored
end
end
data = data(1:index, :); % Crop unused elements
This is much faster, when the size of the output is over a certain limit. Notice that for the iterative growing of a 1000x2 array, you have to obtain sum(1:1000)*2*8 bytes from the operating system and copy the same amount of data: more than 800kB althought the result has 16kB only.

More Answers (1)

Mischa Kim
Mischa Kim on 18 Jan 2014
Sure. Simply append the data point to the existing matrix of data points:
for ii = 1:N
...
if FLAG % if condition is true, append data point to matrix
data = [data; data_point];
...
end
end
Make sure that data_point is a 1x2 (row) vector.
  1 Comment
roro6992
roro6992 on 18 Jan 2014
But i want the data matrix to be of the same dimension of the no. of selected data points. I mean if k points are selected the matrix wud be kx2.

Sign in to comment.

Categories

Find more on Creating and Concatenating Matrices in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!