Add noise to discrete time series
2 views (last 30 days)
Show older comments
Hi,
I have a long-term time series composed by discrete labels,the values are 1,2,3,4.
Now, I want to add noise to these time series changing in randomly position the value of the label.
I need to pass the percentage of the data to change (for ex. 5% or 10%), evaluate randomly the positions to change and change the value in the positions selected.
Example:
input: [11122323444442343211] % 20 elements
Add noise for 10 % = 2 elements...
select randomly positions of 2 elements and change the value
output: [11142323441442343211]
Thanks in advance.
Andrea
0 Comments
Accepted Answer
Image Analyst
on 28 Feb 2015
Try this rather straightforward approach using randperm():
inputValues = [1,1,1,2,2,3,2,3,4,4,4,4,4,2,3,4,3,2,1,1] % 20 elements
% Find out how many elements 10% of our input vector is.
elementsToChange = round(0.1 * length(inputValues))
% Randomly choose that many locations to change the value of.
indexesToChange = randperm(length(inputValues), elementsToChange)
outputValues = inputValues; % Initialize
% Get new values for the indexes that we want to change.
newValues = randi(4, 1, length(indexesToChange))
% Assign those values to the locations we selected.
outputValues(indexesToChange) = newValues
Let me know if there is anything you don't follow or understand.
0 Comments
More Answers (0)
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!