关于#matlab#的问题:提示错误使用双精度

有人知道这个怎么改吗
提示 P(i、w)=x(i、w).*S(i、w)*(1-R(i、w)).*z1(i)错误使用双精度
第一次学matlab,求指点!
中间可能有很多错误,对编程很不熟悉,不要太介意

img

 X=optimvar(x,50240、                                  integer',LowerBound,0,UpperBound,1Z=x1sread(50个重要供应商.x1sx,B2:B51°)
 Z1=zeros(501);
 for i=1:50
      ifz(i)==3
          z1(i)=1/0.6
      elseif z(i)==2
          z1(i)=1/0.66
      e1se
          z1(i)=1/0.72
      end
 end
 P=zeros(50240);
 c=zeros(50,1):c(1)=28200:
 forw=1:240
      for i=l:50
          x(i,w)=double(x(i,w)):
          S(i,w)=double(S(i,w))
          R(i,w)=double(R(i,w))
          z1(i)=double(z1(i));
          P(i,w)=x(i、w)°.*S(i,w)*(1-R(i,w)).*z1(i)
      end
      d=sum(x)
      prob.Objective=d(w):
      Pl=sum(P)
      c(2)=c(1)+P1(1)-28200;
      c(w-1)=P1(1,w-1)+c(w-2)-28200:
     prob.Constraints.cons=c(w-1)+P1(w)>=56400
 end

从你提供的问题截图来看,错误提示是由于变量名混淆引起的。你在最开始的定义中使用了小写字母"x",而在后续的计算中使用了大写字母"X",这导致了未定义的变量错误。

另外,你在代码中使用了x1sread函数,这可能并不是Matlab的内建函数。如果你是想读取外部文件的数据,可以使用xlsread函数。另外,你对Z的定义也存在问题,应该使用Z = xlsread('50个重要供应商.x1sx', 'B2:B51');

下面是修正后的代码:

% 读取外部文件数据
Z = xlsread('50个重要供应商.x1sx', 'B2:B51');
Z1 = zeros(50, 1);

for i = 1:50
    if Z(i) == 3 % 将 z 改为 Z
        Z1(i) = 1/0.6;
    elseif Z(i) == 2 % 将 z 改为 Z
        Z1(i) = 1/0.66;
    else
        Z1(i) = 1;
    end
end

修正后的代码应该可以解决你遇到的问题。请注意对变量名的一致性以及使用正确的函数进行操作。如果还有其他问题,请提供更多详细信息以便我能更好地帮助你。