Discover MakerZone

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

delete rows based on whether the day is a wednesday or not

Asked by Locks on 4 May 2013

Hi,

I have a dataset with 18 columns and thousands of rows. In column 6 is always the date of the respective row. I would now like to check for which rows column 6 (dates) is a wednesday.

I already have the following code:

dataset=zeros(size(data18,1),19);
dataset(:,1:18)=data18;
numberEl=length(dataset(:,1));
numberID=[1:numberEl]';
dataset(:,19)=numberID;
d1=dataset(:,6);
dates=datestr(d1,'ddd-mm-yyyy');
M=[cellstr(dates) num2cell((1:numberEl)')];
M=M(ismember(dates(:,1:3),'Wed','rows'),:);
nums = [M{:,2}];
rowsToKeep=nums';
rowsToDeleteNotWednesday=dataset(:,19)~rowsToKeep;
dataset(rowsToDeleteNotWednesday, :) = [];
The last two lines of code is not working. In column 19, I have all numbers from one till the end of the vector and I though that there could be a way that everytime that number is not equal to one of the numbers in vector rowsToKeep, the entire row will be deleted.

0 Comments

Locks

Products

No products are associated with this question.

1 Answer

Answer by Azzi Abdelmalek on 4 May 2013
Accepted answer

You can use

idx=find(ismember(dates(:,1:3),'Wed','rows'));

3 Comments

Locks on 4 May 2013

that is the same is the rowsToKeep vector isn't it?

the point where I am struggling is how I can create a matrix with all the columns, based on the matrix dataset, but with only those rows which are in idx or rowsToKeep

Azzi Abdelmalek on 4 May 2013
dataset=zeros(size(data18,1),19);
dataset(:,1:18)=data18;
numberEl=length(dataset(:,1));
numberID=[1:numberEl]';
dataset(:,19)=numberID;
d1=dataset(:,6);
dates=datestr(d1,'ddd-mm-yyyy');
rowsToKeep=find(ismember(dates(:,1:3),'Wed','rows'));
final_dataset=dataset(rowsToKeep,:)
Locks on 4 May 2013

perfect, thanks!

Azzi Abdelmalek

Contact us