I have a 84761 x 8 matrix (see attached file as an example of data from the matrix).
I would like to extract all of the rows of data where the month (3rd column) = 11, 12, 1, 2 and 3.
I have set the 'months' to look for in an array called WinterMonths.
I am trying to loop through the matrix (EditedWindTempMatrix) and write all of the data where the month = a 'winter' month to a new matrix.
The 'for loop' loops through the 5 'winter' months.
My problem lies in coding the if loop. i.e. extract the data and write it to a new matrix if the condition is true.
How do I index the new matrix (called WinterWTMatrix) to write the data from the matrix with all the data (EditedWindTempMatrix) to the new matrix only when the condition specified is true?
WinterMonths = [11 12 1 2 3]; % 1 x 5 array
for k = 1:length(WinterMonths); MonthIdx=WinterMonths(k); if EditedWindTempMatrix(:,3)==MonthIdx; WinterWTMatrix=EditedWindTempMatrixdata;
I know that I am not correctly extracting the data from the EditedWindTempMatrix and not correctly writing it to the WinterWTMatrix but I am not sure how to do this.
(I can do it column by column but wanted a more efficient way to extract the desired data).
No products are associated with this question.
% Create sample data: %EditedWindTempMatrix = randi(12, 10,3) % Define which months are winter. WinterMonths = [11 12 1 2 3]; % 1 x 5 array
% Find out which rows are winter. rowsToExtract = ismember(EditedWindTempMatrix(:, 3), WinterMonths) % Get those rows from the original matrix WinterData = EditedWindTempMatrix(rowsToExtract,:)
Search the third column for your desired month
irows = (EditedWindTempMatrix(:,3) == 11) | ... (EditedWindTempMatrix(:,3) == 12) | ... (EditedWindTempMatrix(:,3) == 1) | ... (EditedWindTempMatrix(:,3) == 2) | ... (EditedWindTempMatrix(:,3) == 3);
Then "irows" is a logical array of length of size(1) of EditedWindTempMatrix. Then
WinterWTMatrix = EditedWindTempMatrix(irows, :);
Play games and win prizes!Learn more