Filter löschen
Filter löschen

Info

Diese Frage ist geschlossen. Öffnen Sie sie erneut, um sie zu bearbeiten oder zu beantworten.

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

1 Ansicht (letzte 30 Tage)
Adhish Aggarwal
Adhish Aggarwal am 19 Apr. 2017
Geschlossen: MATLAB Answer Bot am 20 Aug. 2021
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 Kommentare
Geoff Hayes
Geoff Hayes am 19 Apr. 2017
Adhish - how is b set? Please post more of your code.
Adhish Aggarwal
Adhish Aggarwal am 19 Apr. 2017
I have mine given my full code p above. Please let me know. Thank you

Antworten (1)

Steven Lord
Steven Lord am 19 Apr. 2017
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 Kommentar
Adhish Aggarwal
Adhish Aggarwal am 19 Apr. 2017
I have mine given my full code p above. Please let me know. Thank you

Diese Frage ist geschlossen.

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by