フィルターのクリア

Info

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

It only shows the else value if value of b crosses 15 even once.

1 回表示 (過去 30 日間)
Adhish Aggarwal
Adhish Aggarwal 2017 年 4 月 19 日
閉鎖済み: MATLAB Answer Bot 2021 年 8 月 20 日
b = AXIS(1:100,1) - KOTAK(1:100,1);
avg5 = zeros(5,1);
for k = 5:length(b)
avg5(k) = mean(b(k-4:k,1));
end
a = 0;
avg5 = [a;avg5];
avg5(numel(avg5),:) = [];
std5 = zeros(5,1);
for al = 5:length(b)
std5(al) = std(b(al-4:al,1));
end
% a = 0;
std5 = [a;std5];
std5(numel(std5),:) = [];
up5 = zeros(length(std5),1);
for d = 1 : length(std5)
if abs(b) < 14.5
up5(d) = std5*2 + avg5;
down5(d) = std5*(-2) + avg5;
else
up5(d) = std5*2 + avg5;
down5(d) = std5*(-2) + avg5;
end
end
It works well till up5 = zeros(length(std5,1));
  3 件のコメント
Geoff Hayes
Geoff Hayes 2017 年 4 月 19 日
Adhish - how is b set? Please post more of your code.
Adhish Aggarwal
Adhish Aggarwal 2017 年 4 月 19 日
I have mine given my full code p above. Please let me know. Thank you

回答 (1 件)

Steven Lord
Steven Lord 2017 年 4 月 19 日
That's the correct behavior. From the documentation for the if keyword: " if expression, statements, end evaluates an expression, and executes a group of statements when the expression is true. An expression is true when its result is nonempty and contains only nonzero elements (logical or real numeric). Otherwise, the expression is false. "
In your case, you probably want to use logical indexing instead.
  1 件のコメント
Adhish Aggarwal
Adhish Aggarwal 2017 年 4 月 19 日
I have mine given my full code p above. Please let me know. Thank you

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

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by