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

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
    关注
    不知道你这个问题是否已经解决, 如果还没有解决的话:

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

报告相同问题?

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题