how do i randomly sample a sinewave?
2 views (last 30 days)
Show older comments
hey can someone help me?i am trying to randomly sample sinewave but i am having no luck. i have tried Google, i tried using the help function on the 'rand' command and still i am no closer to sampling the signal.
Accepted Answer
More Answers (2)
Image Analyst
on 15 Mar 2014
Try this:
fo=4
fs=100
ts=1/fs
t=0:ts:1-ts
n=length(t)
y=2*sin(2*pi*fo*t)
plot(t,y)
numberOfSamplesToTake = 20;
sampleIndexes = randperm(numel(y), numberOfSamplesToTake)
% Plot the samples;
ts = t(sampleIndexes)
ys = y(sampleIndexes)
hold on;
plot(ts, ys, 'r*');
![](https://www.mathworks.com/matlabcentral/images/broken_image.png)
4 Comments
Image Analyst
on 16 Mar 2014
You must have a really old version of MATLAB before they added the second input argument of randperm. Try this:
numberOfSamplesToTake = 20;
sampleIndexes = randperm(numel(y))
sampleIndexes = sampleIndexes(1:numberOfSamplesToTake)
dpb
on 16 Mar 2014
Ah...good catch, IA. Never crossed my mind but my R12 doesn't include it--how quick we forget! :)
Presuming you're correct (and that's a good bet) perhaps a good use for a utility function for the OP to take the second argument.
Sulaymon Eshkabilov
on 14 Aug 2021
An alternative solution is:
N_samples = 20;
y_rand = datasample(y, N_samples);
% OR
y_rand = randsample(y,N_samples);
0 Comments
See Also
Categories
Find more on Multirate Signal Processing 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!