Please help me vectorize my loop to construct query vector from sample points

2 visualizzazioni (ultimi 30 giorni)
I want to construct a vector xq (the query vector) from xs (sample point vector) for use in interp1. Ideally, xq would:
  1. contain all element from xs
  2. evenly spaced when between any xs(i) and xs(i+1)
  3. xq(i+1)-xq(i)<t always true for a given threshold t.
  4. for xs(i+1)-xs(i)<t already, no xq between the 2 points (but just on xs(i+1) and xs(i))
I cannot think of any code to achieve all of 4 without some kind of loop. Does anyone have a good idea? Thanks in advance
Here is a loop version I wrote. I am sorry if I didn't prase my original question clearly.
t=2;
xs=cumsum(10*rand(1,10))
xsdelta=diff(xs)
xq=[];
for i=1:length(xsdelta)
xq=[xq,xs(i),nan([1,floor(xsdelta(i)/t)])];
end
xq=[xq,xs(end)]
xq=fillmissing(xq,"linear",2)

Risposta accettata

Bruno Luong
Bruno Luong il 13 Apr 2021
Modificato: Bruno Luong il 13 Apr 2021
xs=cumsum(ceil(10*rand(1,10)))
t=pi;
p=cumsum([0 ceil(diff(xs)/t)]);
xq=interp1(p,xs,0:p(end))

Più risposte (0)

Prodotti


Release

R2019b

Community Treasure Hunt

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

Start Hunting!

Translated by