Replace repeatative values by using interpolation ?

3 Ansichten (letzte 30 Tage)
Koustubh Shirke
Koustubh Shirke am 14 Mär. 2020
Kommentiert: Ameer Hamza am 14 Mär. 2020
Hi Matlabers ,
I have a vector which has repeatative values from 0 to 1.
I want to relace those repeataive values by using interpolated values in matlab script. As a result, I will have no any repeatative value and the plot/ and curve of that vector will be smooth.
Thanks in advance.

Akzeptierte Antwort

Ameer Hamza
Ameer Hamza am 14 Mär. 2020
Try this
x = [0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 1 1 1 1 1]'; % generate random data
indexes = [1; find(x(2:end) - x(1:end-1))+1];
x_new = zeros(size(x));
for i=1:numel(indexes)-2
x_new(indexes(i):indexes(i+1)) = interp1([0 1], x(indexes([i i+1])), linspace(0, 1, indexes(i+1)-indexes(i)+1));
end
x_new(indexes(end-1):end) = interp1([0 1], x([indexes(end-1) end]), linspace(0, 1, numel(x)-indexes(end-1)+1));
  2 Kommentare
Koustubh Shirke
Koustubh Shirke am 14 Mär. 2020
Hi Ameer,
Thanks for the answe. Its really helpfu.
It seems , it keeps first value of start of any duplicate. Can I also shift it to centre ? So that I will keep all centred value of duplictaes and then interploate remained ?
Ameer Hamza
Ameer Hamza am 14 Mär. 2020
try something like this
x = [0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0]'; % generate random data
indexes = find(x(2:end) - x(1:end-1))+1;
indexes = floor(movmean(indexes, 2, 'Endpoints', 'discard'));
x_new = zeros(size(x));
x_new(1:indexes(1)) = interp1([0 1], x([1 indexes(1)]), linspace(0, 1, indexes(1)));
for i=1:numel(indexes)-1
x_new(indexes(i):indexes(i+1)) = interp1([0 1], x(indexes([i i+1])), linspace(0, 1, indexes(i+1)-indexes(i)+1));
end
x_new(indexes(end):end) = interp1([0 1], x([indexes(end) end]), linspace(0, 1, numel(x)-indexes(end)+1));

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Creating and Concatenating Matrices finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by