Random picking of adjacent data points
조회 수: 2 (최근 30일)
이전 댓글 표시
Hi,
May someone help me
I have data in one column and want to randomly pick adjacent 48 data points for 1000 times. For example, we have 10 data point (1, 2,3, 4,5,6,7,8,9,10) and we randomly pick 3 adjacent data points 5 times.
May some one help me ...
Thank you.

댓글 수: 0
채택된 답변
Image Analyst
2020년 8월 29일
Try this:
data = [1:50000]'; % Whatever.....
% Define general parameters for getting the samples:
numElements = size(data, 1)
numAdjacent = 48
numSubsets = 1000
% Now do the iterations to get each of the 1000 subsets.
for k = 1 : numSubsets
% Get the first index at random. Don't get within numAdjacent of the end though!
firstIndex = randi(numElements - numAdjacent + 1);
% Now get the second index which will make the subset have adjacent indexes.
secondIndex = firstIndex + numAdjacent - 1;
% Get one subset of 48 adjacent data samples.
theseData = data(firstIndex : secondIndex);
% Now do something with this set of adjacent elements.
end
댓글 수: 5
Image Analyst
2020년 8월 29일
You said "I have data set of 50000 enteries and I want to pick 1000 random subsets having 48 adjacent enteries." You did not tell us that you wanted those subsets stored in a 2-D array. Well I'm sure you've already done it by now, but anyway, here is how I created a matrix of 1000 columns and put each subset into its appropriate column:
data = [1:50000]'; % Whatever.....
% Define general parameters for getting the samples:
numElements = size(data, 1)
numAdjacent = 48
numSubsets = 1000
% Create an output array with 1000 columns.
output = zeros(numAdjacent, numSubsets);
% Now do the iterations to get each of the 1000 subsets.
for k = 1 : numSubsets
% Get the first index at random. Don't get within numAdjacent of the end!
firstIndex = randi(numElements - numAdjacent);
% Now get the second index which will make the subset adjacent.
secondIndex = firstIndex + numAdjacent - 1;
fprintf('Subset %d goes from index %d to index %d.\n', k, firstIndex, secondIndex);
% Get one subset of 48 adjacent data samples.
theseData = data(firstIndex : secondIndex);
% Now store this set of adjacent elements into our output array.
output(:, k) = theseData;
end
추가 답변 (1개)
madhan ravi
2020년 8월 29일
편집: madhan ravi
2020년 8월 29일
datasets = num2cell(reshape(data(randperm(48e3)), [], 1e3), 1);
%celldisp(datasets)
댓글 수: 3
참고 항목
카테고리
Help Center 및 File Exchange에서 Matrix Indexing에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!