鄜州与月 2019-11-24 14:48 采纳率: 0%
浏览 712

MATLAB 如何让数组中某个元素循环变化

我需要遍历求得最优解,也就是本题目中确定“money(i)”的取值,但是MATLAB循环的过程用for的话会出现:

表达式无效。调用函数或对变量进行索引时,请使用圆括号。否则,请检查不匹配的分隔符。

请问如何解决

i= 1:20;
xi = 110.25./(i.*(21-i));
val = 10.*i;
num_vali = 21-i;
money = zeros(1,20);
finalmoneyi = zeros(0,20);
resultmoneyi = zeros(0,20);
resultE = 0;
 for money(1) = 0:3.125*val(1)
  for money(2) = 0:3.125*val(2)
   for money(3) = 0:3.125*val(3)
    for money(4) = 0:3.125*val(4)
     for money(5) = 0:3.125*val(5)
      for money(6) = 0:3.125*val(6)
       for money(7) = 0:3.125*val(7)
        for money(8) = 0:3.125*val(8)
         for money(9) = 0:3.125*val(9)
          for money(10) = 0:3.125*val(10)
           for money(11) = 0:3.125*val(11)
            for money(12) = 0:3.125*val(12)
             for money(13) = 0:3.125*val(13)
              for money(14) = 0:3.125*val(14)
               for money(15) = 0:3.125*val(15)
                for money(16) = 0:3.125*val(16)
                 for money(17) = 0:3.125*val(17)
                  for money(18) = 0:3.125*val(18)
                   for money(19) = 0:3.125*val(19)
                    for money(20) = 0:3.125*val(20)
                        %此数是判断是否合理
                            if sum(sum(money)) <= 1000
                                for k=1:20
                                    finalmoneyi(k)=E(k,money(k));
                                end
                                if sum(sum(finalmoneyi))>resultE
                                    resultE = sum(sum(finalmoneyi);
                                    resultmoney(1:20)=money(1:20);
                                end
                            end
                    end
                   end
                  end
                 end
                end
               end
              end
             end
            end
           end
          end
         end
        end
       end
      end
     end
    end
   end
  end
 end



function[result1] = E(j,money)
val = 10*j;
result1 = (1-p(j,money))*0.8*money+p(j,money)*2.5*val;
end

function[result2] = p(j,money)
x = 110.25/(j*(21-j));
val = 10*j;
if money <=val
    result2 = 0;
else
    result2 = ((money/val-1)/2.125)^x;
end
end
  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2022-09-09 16:22
    关注
    不知道你这个问题是否已经解决, 如果还没有解决的话:

    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 以帮助更多的人 ^-^
    评论

报告相同问题?

悬赏问题

  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
  • ¥15 让node服务器有自动加载文件的功能