为什么画不出来图像,出现”错误使用 plot数据必须为可转换为双精度值的数值、日期时间、持续时间或数组。“的问题,如何解决并画图?
%定义参数
syms a b c
syms alpha beta gamma
syms k f rho vartheta delta e_0 eta_M eta_R
%基本公式
mx_1=alpha.*k.*(a-b.*c).^2/(8.*b.*(delta+rho).*(vartheta+rho));
mx_2=k.*(a-b.*c).^2/(8.*b.*(vartheta+rho));
rx_1=alpha.*k.*(a-b.*c).^2/(16.*b.*(delta+rho).*(vartheta+rho));
rx_2=k.*(a-b.*c).^2/(16.*b.*(vartheta+rho));
gx_2=7.*k.*(a-b.*c)/(32.*(vartheta+rho)-e_0.*f.*k.*(a-b.*c)/(4.*(vartheta+rho)));
gx_1=(f+alpha.*gx_2)/(delta+rho);
d_g=(log(gx_1)-log(mx_1)/delta);
syms d
mx_3=piecewise(d>0&d<d_g,gamma.^2.*(1-exp(delta.*d)/2).*gx_1.*mx_1/(rho.*eta_M)+beta.^2.*rx_2.*mx_2/(rho.*eta_R),d>=d_g,gamma.^2.*(1-exp(delta.*d)/2).*exp(delta.*d).*mx_1/(rho.*eta_M)+beta.^2.*rx_2.*mx_2/(rho.*eta_R));
rx_3=piecewise(d>0&d<d_g,gamma.^2.*gx_1.*rx_1/(rho.*eta_M)+beta.^2.*rx_2/(2.*rho.*eta_R),d>=d_g,gamma.^2.*exp(delta.*d).*mx_1.*rx_1/(rho.*eta_M)+beta.^2.*rx_2/(2.*rho.*eta_R));
gx_3=piecewise(d>0&d<d_g,gamma.^2.*gx_1/(2.*rho.*eta_M)+beta.^2.*rx_2.*gx_2/(rho.*eta_R)-beta.^2.*rx_2.^2/(2.*rho.*eta_R),d>=d_g,gamma.^2.*exp(delta.*d).*mx_1.*gx_1/(rho.*eta_M)+beta.^2.*rx_2.*gx_2/(rho.*eta_R)-beta.^2.*rx_2.^2/(2.*rho.*eta_R)-gamma.^2.*(exp(delta.*d).^2)/2.*rho.*eta_M);
syms t
tau1=piecewise(t>=0&t<d,0,t>=d,(1-exp(-(t-d).*delta)).*(gamma.^2).*gx_1/(delta.*eta_M));
tau2=piecewise(t>=0&t<d,0,t>=d,(1-exp(-(t-d).*delta)).*exp(vartheta.*d).*gamma^2*mx_1/(delta.*eta_M));
tau=piecewise(d>0&d<d_g,tau1, d>=d_g,tau2);
G_1=piecewise(t>=0&t<d,(1-exp(-vartheta.*t)).*beta.^2.*rx_2/(vartheta.*eta_R),t>=d,(1-exp(-vartheta.*t)).*beta.^2.*rx_2/(vartheta.*eta_R)+(1-exp(-(t-d).*vartheta)).*alpha.*gamma.^2.*gx_1/(delta.*vartheta.*eta_M)+(exp(-(t-d).*vartheta)-exp(-(t-d).*delta)).*alpha.*gamma.^2.*gx_1/(delta.*(vartheta-delta).*eta_M));
G_2=piecewise(t>=0&t<d,(1-exp(-vartheta.*t)).*beta.^2.*rx_2/(vartheta.*eta_R),t>=d,(1-exp(-vartheta.*t)).*beta.^2.*rx_2/(vartheta.*eta_R)+((1-exp(-(t-d).*vartheta))/(delta.*vartheta.*eta_M)+(exp(-(t-d).*vartheta)-exp(-(t-d).*delta))/(delta.*(vartheta-delta).*eta_M)).*alpha.*gamma.^2.*exp(delta.*d).*mx_1);
G=piecewise(d>0&d<d_g,G_1,d>=d_g,G_2);
V_M=tau.*mx_1+G.*mx_2+mx_3;
V_R=tau.*rx_1+G.*rx_2+rx_3;
V=tau.*gx_1+G.*gx_2+gx_3;
%赋值
a=100;
b=0.5;
c=2;
alpha=1;
k=0.4;
rho=0.2;
vartheta=1;
delta=0.5;
eta_M=15;
eta_R=13;
beta=2;
gamma=2;
e_0=10;
f=0.7;
%绘制分散决策下制造商和零售商的利润;
t=linspace(0,3);
figure
plot(t,V_M,t,V_R)
在 MATLAB 中出现“错误使用 plot数据必须为可转换为双精度值的数值、日期时间、持续时间或数组”这样的错误通常是由于数据类型不匹配导致的。
要解决这个问题,你需要检查输入到 plot 函数中的数据是否符合要求。具体而言,数据应该是双精度浮点数、日期/时间、持续时间或者数组类型。
以下是几个可能导致此问题的原因和解决方法:
1.数据类型不匹配
确保你的输入数据类型与 plot 函数所要求的类型一致。如果是其他类型的数据,例如字符串或单精度浮点数,需要进行转换。
2.空的数据
当你尝试在 plot 函数中使用空数据时,也会出现这个错误。请确保你输入了有效的数据。
3.未定义的变量
当你尝试将未定义的变量传递给 plot 函数时,也会出现这个错误。请确保你的变量已经被正确地定义并赋值。
4.不符合大小要求的数据
当你尝试将大小不匹配的数据传递给 plot 函数时,也会出现这个错误。请确保你的数据具有相同的大小和尺寸。
如果以上解决方法无法解决你的问题,请提供更多的信息,例如你的代码和数据,以便我们更深入地了解你的问题并提供更具体的解决方案。