Azzera filtri
Azzera filtri

Loop not providing the right answer

1 visualizzazione (ultimi 30 giorni)
liu James
liu James il 15 Dic 2016
Commentato: liu James il 15 Dic 2016
Help, the calculation provides 0 for all cells. why calling the formula on the command line it provides the right answer for the line item, but once put into a loop the answers is 0 for all cells in N.
for s=1:34
TR1{s}=abs((prices{1,3}{1,s}(2:end))-(prices{1,4}{1,s}(2:end)));
TR2{s}=abs((prices{1,3}{1,s}(2:end))-(prices{1,5}{1,s}(1:end-1)));
TR3{s}=abs((prices{1,5}{1,s}(1:end-1))-(prices{1,4}{1,s}(2:end)));
TR4{s}=[TR1{1,s} TR2{1,s} TR3{1,s}];
TR{s}=max(TR4{1,s},[],2);
end
% N (Average True Range)
for i=1:length(TR)
for t=length(TR{i})
if t<21
N{i}(t,1)=mean(TR{i}(1:t,1));
else
N{i}(t,1)=((19*(TR{i}(t-1,1)))+TR{i}(t,1))/20;
end
end
end
See attached for prices.mat

Risposta accettata

KSSV
KSSV il 15 Dic 2016
Modificato: KSSV il 15 Dic 2016
All fine...only a minor change:
clc; clear all ;
load prices.mat ;
for s=1:34
TR1{s}=abs((prices{1,3}{1,s}(2:end))-(prices{1,4}{1,s}(2:end)));
TR2{s}=abs((prices{1,3}{1,s}(2:end))-(prices{1,5}{1,s}(1:end-1)));
TR3{s}=abs((prices{1,5}{1,s}(1:end-1))-(prices{1,4}{1,s}(2:end)));
TR4{s}=[TR1{1,s} TR2{1,s} TR3{1,s}];
TR{s}=max(TR4{1,s},[],2);
end
% N (Average True Range)
% N = cell(length(TR),1) ;
for i=1:length(TR)
for t=1:length(TR{i})
if t<21
N{i}(t,1)=mean(TR{i}(1:t,1));
else
N{i}(t,1)=((19*(TR{i}(t-1,1)))+TR{i}(t,1))/20;
end
end
end
  4 Commenti
KSSV
KSSV il 15 Dic 2016
Check your t loop, it should be t=1:length(TR{i})...I have edited the answer....is that you are expecting?
liu James
liu James il 15 Dic 2016
thanks much appreciated!!!!! it was driving me nuts.

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su Loops and Conditional Statements in Help Center e File Exchange

Tag

Community Treasure Hunt

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

Start Hunting!

Translated by