MATLAB Answers

How to input signal to skip numbers and generate data?

1 view (last 30 days)
Leon Low
Leon Low on 27 Jan 2021
Commented: Mara on 29 Jan 2021
I have a set of random 0s and 1s matrix A = [0 0 0 0 0 1 1 1 0 0 0 0 1 0 1 1 0 0 1 1 1 1 1 0 0 0 0]. I want to create a matrix B that has the same size as A that if i input an interval of say 'n', it skips n numbers, and if it lands on 1, it records 1 but if it lands on 0 it records 0. however, if it doesnt land on 1 for a long time and finally lands on a 1, it records a 1 even though it has skipped more than n numbers. How do I create this matrix B?
For example, n = 2, then matrix B = [0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 1 0 0 1 0 0 0 0 0]

Accepted Answer

Mara
Mara on 27 Jan 2021
A = [0 0 0 0 0 1 1 1 0 0 0 0 1 0 1 1 0 0 1 1 1 1 1 0 0 0 0];
n = 2;
B = zeros (1,length(A));
count = 0;
for i = 1:length(A)
count = count + 1;
if A(i) == 1 && count > n
B(i) = 1;
count = 0;
end
end
Does this help you?
  5 Comments
Mara
Mara on 29 Jan 2021
there are many different ways to find the first nonzero position, one is the function find().
Citing the documentation:
k = find(X,n) returns the first n indices corresponding to the nonzero elements in X.
type "doc find" in the command window for more info.
Best,
Mara

Sign in to comment.

More Answers (0)

Tags

Community Treasure Hunt

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

Start Hunting!