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

循环matlab中的十进制输入和输出,matlab,for-loop,Matlab,For Loop,我得到了一个错误:下标索引必须是实正整数或逻辑数 我的输入和输出值都是小数,这是问题所在吗 本质上,我调用两个矩阵,M和N。然后我迭代N,根据N与M小于、大于等的比较,它将N值放入方程并输出一个值。N的输入和函数的输出都是小数 我想用for循环的结果填充priceB_值 有什么明显的东西我遗漏了吗 priceB_values = zeros(1:4) for i = N(1:4,6) if i < M(3,6) priceL_Opt1_Value = ((M(3,6)-M(3

我得到了一个错误:下标索引必须是实正整数或逻辑数

我的输入和输出值都是小数,这是问题所在吗

本质上,我调用两个矩阵,M和N。然后我迭代N,根据N与M小于、大于等的比较,它将N值放入方程并输出一个值。N的输入和函数的输出都是小数

我想用for循环的结果填充priceB_值

有什么明显的东西我遗漏了吗

 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=zeros1:4中 调用zeros1:4创建一个由零组成的四维数组, 如果您只想创建一个包含4个元素的向量,那么您最好 将其更改为零1,4。 问题可能在于i=N1:4,6语句。我被分配了 与elseif语句中的标量进行比较的列向量, 所以你最好把它改成i=N1: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 

阅读并思考完整的错误信息,并提供它,这样人们就可以真正地帮助你。它准确地告诉你问题在哪里。虽然您提供的代码不能实现N?,但我保证问题在于priceB_valuesi=priceL_Opt1_值,因为您将I定义为N1:4,6,但没有确保此范围是整数数组。请看抱歉的困惑-我已经看到了答案,它已经澄清了我对非整数的问题-我知道这一点。但我不知道的是如何运行for循环并让它用十进制答案填充数组。我似乎找不到答案,但我肯定我遗漏了什么。另外,M和N是被称为抱歉的矩阵,隐藏在段落中是的,我认为M和N是矩阵,你需要向我们提供它们。我也不明白你在问什么。请提供一个功能示例,以复制您的问题以及预期输出的示例。看见
priceB_values = priceB_values(1:4,6);