Count conservative occurrences of zeros and if zero appeared for defined number of times it should be changed.

1 次查看(过去 30 天)
Hello,
There is an array A size (NxM), each column represents when a signal was created. I need to close that signal if certain time it was not created again and assign -1 value. For example like this:
1 0 1 0 1
0 1 0 1 0
0 0 1 0 0
1 0 0 1 1
0 0 1 1 0
0 1 0 0 0
I need to count consecutive occurrences of zero column-vise, and if zero occurred for defined number of times for example two, it should be changed to -1 and output should look like this:
1 0 1 0 1
0 1 0 1 0
-1 0 1 0 -1
1 -1 0 1 1
0 0 1 1 0
-1 1 0 0 -1
Count conservative occurrences of zeros and if zero appeared for defined number of times it should be changed.

采纳的回答

Jan
Jan 2018-7-8
编辑:Jan 2018-7-8
If you want to replace the 2nd element after a 1 by -1, if it was a 0 before:
A = double(rand(10, 5) < 0.3); % Some test data
n = 2;
pattern = [1, zeros(1, n)];
for k = 1:size(A, 2)
index = strfind(A(:, k).', pattern);
A(index + n, k) = -1;
end
  7 个评论
Jan
Jan 2018-7-9
@Mantas Vaitonis: strfind is not implemented for GPUs. If you have a C compiler installed, I'd suggest to try the MEX function. Which OS do you use? Can you work with UINT8 instead of DOUBLEs?
Mantas Vaitonis
Mantas Vaitonis 2018-7-9
@Jan, I am using WIN 10 64BIT, yes it would be possible to use UNIT8 instead of double, becasue this varibale valeus are 1, 0 or -1.

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Creating and Concatenating Matrices 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by