Using bsxfun to plot

3 views (last 30 days)
Jae Won Lee
Jae Won Lee on 20 Nov 2021
Edited: Matt J on 21 Nov 2021
%% I have this following code:
n=10000;
g = exp(-linspace(-2,2,round(n/30)).^2);
[origsig, signal] = deal(conv(randn(n,1),g,'same'));
propnoise = 0.02;
noisepnts = randperm(n);
noisepnts = noisepnts(1:round(n*propnoise));
for ti = 1:length(noisepnts)
tidx = noisepnts(ti):noisepnts(ti)+ceil(rand*10);
signal(tidx) = NaN;
end
%%
islands = bwconncomp (~isfinite(signal));
islands.N = cellfun(@length,islands.PixelIdxList);
filtsig = signal;
for ii = 1:islands.NumObjects
bndpoints = [islands.PixelIdxList{ii}(1)-1 islands.PixelIdxList{ii}(end)+1];
if bndpoints(1)<1 || bndpoints(2)>n
continue
end
linterp = linspace(0,1,islands.N(ii)+2)*diff(signal(bndpoints)) + signal(bndpoints(1));
filtsig(bndpoints(1):bndpoints(2)) = linterp;
end
  3 Comments
Walter Roberson
Walter Roberson on 20 Nov 2021
I do not see a question? You showed your code but I do not see where you ask for information or advice?
Jae Won Lee
Jae Won Lee on 21 Nov 2021
Hi,
I have made the time series with using a faulty device that could eliminate the certain data points and using linear interpolation to fill in the missing values. I am wondering how I could plot these plots using bsxfun.
bsxfun(@time,[signal filtsig],???)

Sign in to comment.

Answers (1)

Matt J
Matt J on 21 Nov 2021
Edited: Matt J on 21 Nov 2021
Now idea why you think bsxfun should be involved. Why not just,
t=linspace(-2,2,n);
plot(t,signal,t,filtsig)

Categories

Find more on Image Processing Toolbox 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!