Plotting specific values of 2xn array based on values in first row

3 views (last 30 days)
Hello! I have 2xn arrays. The first row contains values between 1 and 6 that code specific events that happened at the timepoints that are saved in the second row. Something like this:
1 4 5 1 5
200 350 360 400 600
Goes on like that. It's probably really basic. I want to plot only the timepoints in the second row for the specified event codes in the first row. I hope this is clear. Thanks!

Accepted Answer

Sebastian Castro
Sebastian Castro on 22 Sep 2015
Edited: Sebastian Castro on 22 Sep 2015
You want to be looking at row 1 for every index that matches a certain value... let's take 5 for this example.
row1 = x(1,:);
indices = (row1 == 5);
Then, you want to use those indices to index into row 2:
row2 = x(2,:);
output = row2(indices);
Now, this has a lot of intermediate variables, so you might instead want to do it all in one shot:
output = x(2,x(1,:)==5);
- Sebastian

More Answers (1)

Rose
Rose on 22 Sep 2015
I think you mean like this:
>> x=[1 4 5 1 5;200 350 360 400 600];
>> plot(x(1,:),x(2,:))
You even can add more details to the plot or set the axis limits:
>> plot(x(2,:),x(1,:),'*','LineWidth',1);
>> axis([100 700 0 6]);
xlabel('Time')
ylabel('Values')

Tags

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!