循环matlab中的十进制输入和输出



我遇到了错误:"下标索引必须是真正的正整数或逻辑。"

我有一个值的价值作为输入和输出的事实吗?

本质上,我称两个矩阵m和n。然后我通过n进行迭代,并取决于n与m中的n比较(小于,大于,等等),它将n值放入方程中,并且输出值。N N和功能输出的输入都是小数。

我想用for循环的结果填充PriceB_Values。

我缺少一些明显的东西吗?

 priceB_values = zeros(1:4)
for i = N(1:4,6)
if i < M(3,6)
    priceL_Opt1_Value = ((M(3,6)-M(3,5))/(M(1,6)-M(1,5)))*(priceB_Opt4-M(1,6))+M(3,6)   
elseif i > M(1,6) || priceB_Opt4 < M(1,7)
    priceL_Opt1_Value = ((M(3,7)-M(3,6))/(M(1,7)-M(1,6)))*(priceB_Opt4-M(1,7))+M(3,7)
elseif i > M(1,7) || priceB_Opt4 < M(1,8)
    priceL_Opt1_Value = ((M(3,8)-M(3,7))/(M(1,8)-M(1,7)))*(priceB_Opt4-M(1,8))+M(3,8) 
elseif i == M(1,5)
    priceL_Opt1_Value = M(1,5)
elseif i == M(1,6)
    priceL_Opt1_Value = M(1,6)
elseif i == M(1,7)
    priceL_Opt1_Value = M(1,7)
else i == M(1,8)
    priceL_Opt1_Value = M(3,8)    
end 
priceB_values(i) = priceL_Opt1_Value

end 

尽管很难估算出问题的位置,除非提供了变量,否则可以提出几种可能的错误来源:

  • 问题可能是在语句priceB_values = zeros(1:4)中,调用zeros(1:4)您创建零的4维数组,所以,如果您只想创建一个具有4个元素的向量,那么您会更好将其更改为zeros(1,4)
  • 问题可能存在于i = N(1:4,6)语句中。我被分配了与elseif语句中的标量进行比较的列向量因此,您最好将其更改为i = N(1:4,6)'之类的东西转动您的
  • N中的非全能数字也可能引起问题。解决方案在很大程度上取决于您的需求。

您可能想要这样的东西:

priceB_values = zeros(1,6);
for p = 1:4,6
   ii = N(p);
   if ii < M(3,6)
      priceL_Opt1_Value = ((M(3,6)-M(3,5))/(M(1,6)-M(1,5)))*(priceB_Opt4-M(1,6))+M(3,6)   
   elseif ii > M(1,6) || priceB_Opt4 < M(1,7)
    priceL_Opt1_Value = ((M(3,7)-M(3,6))/(M(1,7)-M(1,6)))*(priceB_Opt4-M(1,7))+M(3,7)
   ...
   end 
   priceB_values(p) = priceL_Opt1_Value
end 

现在p是输入列表和输出列表的整数索引,因此priceB_values(1)priceB_values(4)priceB_values(6)将是有效的,priceB_values(5)将为零。

要摆脱priceB_values(5)(如果需要的话),您可以做:

priceB_values = priceB_values(1:4,6);

相关内容

  • 没有找到相关文章

最新更新