(Дизайнер приложений) Ошибка при использовании matlab.ui.control.EditField / set.Value (строка 96) «Значение» должно быть символьным вектором - PullRequest
0 голосов
/ 10 января 2019

Итак, я создаю приложение для поиска значения на основе нескольких входных данных, но при этом появляется ошибка, поскольку один из выходных данных не отображается.

Это макет приложения

1

Проблема в том, что в разделе общих затрат значение не отображается, когда я нажимаю кнопку расчета. «Q Optimal» работает просто отлично.

2

формула, связанная с кнопкой справа, выглядит следующим образом:

    dm=app.MinimumDemandEditField.Value;
    dM=app.MaximumDemandEditField.Value;
    tm=app.MinimumLeadTimeEditField.Value;
    tM=app.MaximumLeadTimeEditField.Value;
    r1=app.ReorderLevelEditField.Value;
    Et = 0.5*(tm+tM);
    vart = 1/12*(tM-tm)^2;
    Ed = 0.5*(dm+dM);
    vard = 1/12*(dM-dm)^2;
    ED = 1/4*(dm+dM)*(tm+tM);
    varD = 1/144*(3*(dm+dM)^2*(tM-tm)^2+3*(dM-dm)^2*(tm+tM)^2+(tM- 
    tm)^2*(dM-dm)^2);
    gt = 1/(tM-tm);
    fd = 1/(dM-dm);
    fD = 1/((dM-dm)*(tM-tm));
    f1=app.FixedCostEditField.Value;
    c1=app.VariableCostEditField.Value;
    h=app.HoldingCostEditField.Value;
    s=50*c1;
    app.ShortageCostEditField.Value = s
    A1=c1+(h/Ed)*(r1-ED);
    A2=fD*(r1*(tM-tm)*log(r1/(tM*dm))-(r1^2/dM)+(r1*tM)- 
    (r1*tm)*log((dM*tM)/r1)-Et);
    syms x;
    f=(x-r1)*fD;
    EB= int(f,r1,dM*tM);
    A3=Ed*f1+h*Ed*(fD*((r1^2*tm/2)-(dm*r1/2)*(tM^2-tm^2)+(dm^2/6)* 
    (tM^3-tm^3)-((r1^3/6*dM)-(dM*r1*tm^2/2)+(dM^2*tm^3/6)))+(fD/18)* 
    (tM^3-tm^3)*(dM^3-dm^3)-r1*ED+Ed*s*EB);
    Q=(1/h)*((Ed*(A1+h*A2-c1)+(h*(ED-r1))));
    Eoh=fD*((((r1^3*tM)/2)-(((dm*r1)/2)*(tM^2-tm^2))+(((dm^2)/6)* 
    (tM^3-tm^3))-((r1^3)/(6*dM))-((dM*r1*tm^2)/2)+((dM^2*tm^3)/6))+ 
    ((Q^2)/2*Ed)-(Q*ED/Ed)+((fD/(18*Ed))*((tM^3-tm^3)*(dM^3-dm^3)))+ 
    (Q*r1/Ed)-(r1*ED/Ed));
    TC= f1+c1*Q+h*Eoh+s*EB;
    app.QOptimalEditField.Value = Q
    app.TotalCostEditField.Value = TC

Запуск этого дает ошибку:

3

Я подозреваю, что проблема в моем процессе интеграции. Я что-то пропустил или есть лучший способ сделать это?

Спасибо заранее С Уважением, Кевин Ренар

1 Ответ

0 голосов
/ 11 января 2019

Я решил проблему, так как заметил, что в последнем уведомлении об ошибке указано, что входное значение должно быть двойным скаляром, а значение процесса интеграции не является двойным скаляром, поэтому я изменил код интеграции на:

syms x; f=(x-r1)*fD; EB= double(int(f,r1,dM*tM));

1

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...