フィルターのクリア

Info

この質問は閉じられています。 編集または回答するには再度開いてください。

How to use firs value from array column when threshold and others change to zero, moreover if zero repeated for number of times change that element value?

1 回表示 (過去 30 日間)
Mantas Vaitonis
Mantas Vaitonis 2018 年 7 月 5 日
閉鎖済み: Mantas Vaitonis 2018 年 7 月 5 日
Hello Everyone, I have the following code, which was provided by @Stephen Cobeldick, that converts array D
D= -2 2 3 -1 -5
1 4 7 3 4
5 3 -4 6 -5
-7 -2 -1 4 -1
To array B.
B=0 2 3 0 0
1 0 0 3 4
0 0 0 0 -5
-7 -2 -1 0 0
0 2 0 -5 0
Here is the code for that:
X= D>thr;
Y = D<thr & cumsum(X)>0;
Z = [X(1,:); diff(X)>0 | diff(Y)>0];
B = zeros(size(D));
B(Z) = D(Z)
In short this algorithm takes first value when threshold is reached and others are filled with zero. Now I would like to modify B array, that if zeros is repeated two times in a row, it would be change to -1 and the next value which is above or below threshold is changed to zero that result N array would look and the structure should be the same as in original array B that there can not be like this 1 0 0 -1 0 -1, it should be 1 0 0 -1 0 0:
N=0 2 3 0 0
1 0 0 3 4
0 -1 -1 0 -5
-7 0 0 0 0
0 2 0 -5 0
I have the following code that counts how many time value occurs in a row, but it just a bit of what I need:
x = [4 4 4 1 1 1 5 5 5 0 0 0 7 7 7 1 1 1 1];
i = find(diff(x)) ;
n = [i numel(x)] - [0 i];
c = arrayfun(@(X) X-1:-1:0, n , 'un',0);
d=cellfun(@(x) fliplr(x),c,'un',0);
y = cat(2,c{:});

回答 (0 件)

この質問は閉じられています。

Community Treasure Hunt

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

Start Hunting!

Translated by