Variable 'x_opt' is not fully defined on some execution paths.

조회 수: 12 (최근 30일)
Hussain SARWAR KHAN
Hussain SARWAR KHAN 2018년 3월 13일
댓글: Walter Roberson 2022년 10월 27일
i am write this code in userdefined Simulink function For model predictive control but this code has some error so what i have too do.
function [Sa,Sb,Sc] = control(I_ref,I_meas)
2 % Variables defined in the parameters file
3 % Sampling time of the predictive algorithm [s]
4 Ts = 25e-6;
5 % Load parameters
6 R = 10; % Resistance [Ohm]
7 L = 10e-3; % Inductance [H]
8 e = 100; % Back-EMF peak amplitude [V]
9 f_e = 50*(2*pi); % Back-EMF frequency [rad/s]
10 Vdc = 520; % DC-link voltage [V]
11 % Current reference
12 I_ref_peak = 10; % Peak amplitude [A]
13 f_ref = 50*(2*pi); % Frequency [rad/s]
14 % Voltage vectors
15 v0 = 0;
16 v1 = 2/3*Vdc;
17 v2 = 1/3*Vdc + 1j*sqrt(3)/3*Vdc;
18 v3 = -1/3*Vdc + 1j*sqrt(3)/3*Vdc;
19 v4 = -2/3*Vdc;
20 v5 = -1/3*Vdc - 1j*sqrt(3)/3*Vdc;
21 v6 = 1/3*Vdc - 1j*sqrt(3)/3*Vdc;
22 v7 = 0;
23 v = [v0 v1 v2 v3 v4 v5 v6 v7];
24 % Switching states
25 states = [0 0 0;1 0 0;1 1 0;0 1 0;0 1 1;0 0 1;1 0 1;1 1 1];
26 % Optimum vector and measured current at instant k-1
27 persistent x_old i_old
28 % Initialize values
29 if isempty(x_old)
30 x_old = 1;
31 end
32 if isempty(i_old)
33 i_old = 0+1j*0;
34 end
35 g_opt = 1e10;
36 % Read current reference inputs at sampling instant k
37 ik_ref = I_ref(1) + 1j*I_ref(2);
38 % Read current measurements at sampling instant k
39 ik = I_meas(1) + 1j*I_meas(2);
40 % Back-EMF estimate
41 e = v(x_old) - L/Ts*ik - (R - L/Ts)*i_old;
42 % Store the measured current for the next iteration
43 i_old = ik;
44 for i = 1:8
45 % i-th voltage vector for current prediction
46 v_o1 = v(i);
47 % Current prediction at instant k+1
48 ik1 = (1 - R*Ts/L)*ik + Ts/L*(v_o1 - e);
49 % Cost function
50 g = abs(real(ik_ref - ik1)) + abs(imag(ik_ref - ik1));
51 % Selection of the optimal value
52 if (g<g_opt)
53 g_opt = g;
54 x_opt = i;
55 end
56 end
57 % Store the present value of x_opt
58 x_old = x_opt;
59 % Output switching states
60 Sa = states(x_opt,1);
61 Sb = states(x_opt,2);
62 Sc = states(x_opt,3);
63end
  댓글 수: 2
Naresh Rayavarapu
Naresh Rayavarapu 2022년 10월 27일
sir have you found the solution for the script X_opt error
Walter Roberson
Walter Roberson 2022년 10월 27일
if (g<g_opt)
g_opt = g;
x_opt = i;
end
Suppose that condition is never true, then what is x_opt set to?

댓글을 달려면 로그인하십시오.

채택된 답변

Walter Roberson
Walter Roberson 2018년 3월 13일
The message is correct. You do not define the value of x_opt under the circumstance that none of the computed g values are less than the 1e10 that you initialize g_opt to.
  댓글 수: 5
Noemi Hernandez-Oliva
Noemi Hernandez-Oliva 2020년 1월 9일
Hello Hussain can you tell me too what is the solution, I sent you an email
Hussain SARWAR KHAN
Hussain SARWAR KHAN 2020년 1월 20일
PFA, which contains the answer/solution of above question.
Remember in your Prayer,
Regards:
Hussain

댓글을 달려면 로그인하십시오.

추가 답변 (2개)

chao wang
chao wang 2019년 11월 6일
I have another way to achieve your goals.

Hussain SARWAR KHAN
Hussain SARWAR KHAN 2020년 1월 20일
PFA, which contains the answer/solution of above question.
Remember in your Prayer,
Regards:
Hussain

카테고리

Help CenterFile Exchange에서 Model Predictive Control Toolbox에 대해 자세히 알아보기

제품

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by