MATLAB用于循环到多列



我在MATLAB中开发了以下代码块来计算RSI。

%RSI Calculation
n = [14:2:18];
for i = 1:n
gainC = diff(ABC).*((diff(ABC))> 0);
lossC = -(diff(ABC)).*((diff(ABC)) < 0);
avg_gainC = movmean(gainC,[i-1 0],'omitnan'); 
avg_lossC = movmean(lossC,[i-1 0],'omitnan'); 
RS = (avg_gainC ./ avg_lossC);
ABC_RSI = 100 - (100 ./ (1+RS));
end

我需要知道循环的输出如何创建表"ABC_RSI"以及列与n的关系。期望的输出是14w_RSI16w_RSI18w_RSI

我尝试使用:ABC_RSI.n = 100 - (100 ./ (1+RS));

如有任何协助,我们将不胜感激。

我不确定我是否理解这个问题,但如果我假设ABC是列/行向量,并且您试图为n的每个不同值存储RSI。如果是这样的话,那么我建议你们做一个形式为的双循环

%RSI Calculation
n = [14:2:18];
for j = 1 : length( n)
n_j = n( j);
for i = 1 : n_j
gainC = diff(ABC).*((diff(ABC))> 0);
lossC = -(diff(ABC)).*((diff(ABC)) < 0);
avg_gainC = movmean(gainC,[i-1 0],'omitnan'); 
avg_lossC = movmean(lossC,[i-1 0],'omitnan'); 
RS = (avg_gainC ./ avg_lossC);
ABC_RSI( :, j) = 100 - (100 ./ (1+RS));
end
end

输出ABC_RSI将具有与ABC相同的列数和与n长度相同的行数。

相关内容

  • 没有找到相关文章

最新更新