comparing two vectos and inserting where numbers are missing

3 views (last 30 days)
Hi, Have tried various things. I have 2 vectors - a control vector called time (say m by 1) and a matrix call it b of (n by 2) m >n for example
time b
1000 1000 5
2000 2000 10
3000 4000 15
4000 5000 18
5000 6000 20
6000 8000 25
7000 9000 30
8000
9000
10000
i want matrix b to fill in the missing times (ie where missing) and a corresponding value in coloumn 2 of 0
so the output would look like
1000 5
2000 10
3000 0 (this line is new)
4000 15
5000 18
6000 20
7000 0 (this line is new)
8000 25
9000 30
10000 0 (this line is new)
i have mangaged to index the missing spaces with
ind = find(ismember(time,b(:,1)) ==0) which returns 3 7 10 ie the missing places but not sure where to go. more than happy to ignore totlaly what i have done so far.

Accepted Answer

Jan
Jan on 5 Mar 2013
time = (1000:1000:10000).';
b = [1000 5; ...
2000 10; ...
4000 15; ...
5000 18; ...
6000 20; ...
8000 25; ...
9000 30];
found = ismember(time, b(:, 1));
result(found, 2) = b(:, 2);
result(:, 1) = time;

More Answers (1)

Azzi Abdelmalek
Azzi Abdelmalek on 5 Mar 2013
Edited: Azzi Abdelmalek on 5 Mar 2013
b=[1000 5
2000 10
3000 0
4000 15
5000 18
6000 20
7000 0
8000 25
9000 30
10000 0 ]
t=b(:,1)
y=b(:,2)
t1=t(find(y));
y1=y(find(y));
yi=interp1(t1,y1,t)

Categories

Find more on Develop Apps Using App Designer in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!