Clearing the condition signal

1 回表示 (過去 30 日間)
Lev Mihailov
Lev Mihailov 2019 年 7 月 10 日
回答済み: Geoff Hayes 2019 年 7 月 11 日
[a,p]=min(Data01022003)
for chek = 1:length(a)
if p(chek-1)+20< p(chek) & g(chek) <p(chek+1) +20
o(chek )=p(chek+1) ;
else
o(chek)=0;
end
end
p is
p(1)=154 p(2)=162 p(3)=1190 p(4)=153 p(5)=144 p(6)=142
o is
o(1)=154;
o(2)=162;
o(3)=0;
o(4)=153;
o(5)=144;
o(6)=142;
I have a signal condition so that p (1) is not more than p (2) by 20 and not more than p (0)
Help me how to do this?

採用された回答

Geoff Hayes
Geoff Hayes 2019 年 7 月 11 日
Lev - there are a couple of problems with the above - your condition will fail for chek equal to one since chek-1 will be invalid. Likewise, when chek is the length of a, then chek+1 will exceed the array dimensions. So you need to handle both of these cases. Also, g is being used in your condition when you probably mean p...but then you should probably be using length(p) since you are iterating over this array and not a.
Your code could then become
p = [154 162 1190 153 144 142];
o = zeros(size(p));
for k = 1:length(p)
if k == 1
if p(k) < p(k+1) +20
o(k) = p(k);
end
elseif k == length(p)
if p(k) < p(k-1) + 20
o(k) = p(k);
end
elseif p(k) < p(k-1) + 20 && p(k) < p(k+1) + 20
o(k) = p(k);
end
end
There are probably different ways that you can do the above (perhaps even removing the for loop) but I've tried to keep it similar to what you had already...which is very close to already doing what you wanted.

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeAnnotations についてさらに検索

製品

Community Treasure Hunt

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

Start Hunting!

Translated by