How to store a variable no. of data points in a matrix?
3 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
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!!
0 Kommentare
Akzeptierte Antwort
Jan
am 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.
Weitere Antworten (1)
Mischa Kim
am 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.
Siehe auch
Kategorien
Mehr zu Creating and Concatenating Matrices finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!