How to store a variable no. of data points in a matrix?
조회 수: 2 (최근 30일)
이전 댓글 표시
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
채택된 답변
Jan
2014년 1월 18일
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.
추가 답변 (1개)
Mischa Kim
2014년 1월 18일
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.
참고 항목
카테고리
Help Center 및 File Exchange에서 Creating and Concatenating Matrices에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!