Warning: The data cannot be plotted because it is incompatible with the size of the plot or is missing

4 views (last 30 days)
I'm not resolve this error Matlab 2011a.
My script should work normally but I n unable to view.
Could you help me ??
I add the script you attached. it still does not. The problem is with (* Out_matrix inv_Ctl_matrix). Matlab n not seem to do the multiplication of the two matrix vector. Help me please
script:
% VIENNA rectifier analysis - state space
L=3.15e-3; %Filter Inductor
C=66E-6; %Filter Capacitor
rc=0.8; %Filter Capacitor ESR
Dp=0.384; %Positive duty cycle
Dn=1; %Negative duty cycle
RL=490; %Equivalent Output Load
vp=143.7; %Positive voltage
vn=-71.85; %Negative voltage
Ip=4.64;
In=-2.32;
Vref=2.5; %Reference voltage
Vout=700; %Output voltage
Rsense=0.17; %Sensing resistance
Vm=1.92;
VLL=176; %RMS input voltage
% main program
syms s Dp Dn X30 X40
X10=Ip;
X20=In;
sI=[[s 0 0 0];[0 s 0 0];[0 0 s 0];[0 0 0 s]];
%(1-Dp) terms
A_1=[[0 0 -2/(3*L) 0];[0 0 1/(3*L) 0];[1/C 0 0 0];[0 0 0 0]];
B_1=[[0];[0];[0];[0]];
C_1=[0 0 0 0];
% (1-Dn) terms
A_2=[[0 0 0 -1/(3*L)];[0 0 0 2/(3*L)];[0 0 0 0];[0 -1/C 0 0]];
B_2=[[0];[0];[0];[0]];
C_2=[0 0 0 0];
% Constant terms
A_3=[[0 0 0 0];[0 0 0 0];[0 0 -1/(C*(2*rc+RL)) -1/(C*(2*rc+RL))];[0 0 -1/(C*(2*rc+RL)) -1/(C*(2*rc+RL))]];
B_3=[[vp/L];[vn/L];[0];[0]];
C_3=[0 0 1 1];
S=solve( ((1-Dp)*A_1(1,:)+(1-Dn)*A_2(1,:)+A_3(1,:))*[[X10];[X20];[X30];[X40]]+(1-Dp)*B_1(1)+(1-Dn)*B_2(1)+B_3(1), ((1-Dp)*A_1(2,:)+(1-Dn)*A_2(2,:)+A_3(2,:))*[[X10];[X20];[X30];[X40]]+(1-Dp)*B_1(2)+(1-Dn)*B_2(2)+B_3(2), ((1-Dp)*A_1(3,:)+(1-Dn)*A_2(3,:)+A_3(3,:))*[[X10];[X20];[X30];[X40]]+(1-Dp)*B_1(3)+(1-Dn)*B_2(3)+B_3(3), ((1-Dp)*A_1(4,:)+(1-Dn)*A_2(4,:)+A_3(4,:))*[[X10];[X20];[X30];[X40]]+(1-Dp)*B_1(4)+(1-Dn)*B_2(4)+B_3(4));
S.Dp=double(S.Dp(1));
S.Dn=double(S.Dn(1));
V1=double(S.X30(1));
V2=double(S.X40(1));
V1=Vout/2;
V2=Vout/2;
A=(1-S.Dp)*A_1+(1-S.Dn)*A_2+A_3;
sI_A=sI-A;
inv_sI_A=inv(sI_A);
X=[[Ip];[In];[V1];[V2]];
[N1,D1]=numden(inv_sI_A(1,1));
Npoly=sym2poly(N1);
Dpoly=sym2poly(D1);
Npoly=Npoly/Dpoly(1);
Dpoly=Dpoly/Dpoly(1);
A_11=tf(Npoly,Dpoly);
[N1,D1]=numden(inv_sI_A(1,2));
Npoly=sym2poly(N1);
Dpoly=sym2poly(D1);
Npoly=Npoly/Dpoly(1);
Dpoly=Dpoly/Dpoly(1);
A_12=tf(Npoly,Dpoly);
[N1,D1]=numden(inv_sI_A(1,3));
Npoly=sym2poly(N1);
Dpoly=sym2poly(D1);
Npoly=Npoly/Dpoly(1);
Dpoly=Dpoly/Dpoly(1);
A_13=tf(Npoly,Dpoly);
[N1,D1]=numden(inv_sI_A(1,4));
Npoly=sym2poly(N1);
Dpoly=sym2poly(D1);
Npoly=Npoly/Dpoly(1);
Dpoly=Dpoly/Dpoly(1);
A_14=tf(Npoly,Dpoly);
[N1,D1]=numden(inv_sI_A(2,1));
Npoly=sym2poly(N1);
Dpoly=sym2poly(D1);
Npoly=Npoly/Dpoly(1);
Dpoly=Dpoly/Dpoly(1);
A_21=tf(Npoly,Dpoly);
[N1,D1]=numden(inv_sI_A(2,2));
Npoly=sym2poly(N1);
Dpoly=sym2poly(D1);
Npoly=Npoly/Dpoly(1);
Dpoly=Dpoly/Dpoly(1);
A_22=tf(Npoly,Dpoly);
[N1,D1]=numden(inv_sI_A(2,3));
Npoly=sym2poly(N1);
Dpoly=sym2poly(D1);
Npoly=Npoly/Dpoly(1);
Dpoly=Dpoly/Dpoly(1);
A_23=tf(Npoly,Dpoly);
[N1,D1]=numden(inv_sI_A(2,4));
Npoly=sym2poly(N1);
Dpoly=sym2poly(D1);
Npoly=Npoly/Dpoly(1);
Dpoly=Dpoly/Dpoly(1);
A_24=tf(Npoly,Dpoly);
[N1,D1]=numden(inv_sI_A(3,1));
Npoly=sym2poly(N1);
Dpoly=sym2poly(D1);
Npoly=Npoly/Dpoly(1);
Dpoly=Dpoly/Dpoly(1);
A_31=tf(Npoly,Dpoly);
[N1,D1]=numden(inv_sI_A(3,2));
Npoly=sym2poly(N1);
Dpoly=sym2poly(D1);
Npoly=Npoly/Dpoly(1);
Dpoly=Dpoly/Dpoly(1);
A_32=tf(Npoly,Dpoly);
[N1,D1]=numden(inv_sI_A(3,3));
Npoly=sym2poly(N1);
Dpoly=sym2poly(D1);
Npoly=Npoly/Dpoly(1);
Dpoly=Dpoly/Dpoly(1);
A_33=tf(Npoly,Dpoly);
[N1,D1]=numden(inv_sI_A(3,4));
Npoly=sym2poly(N1);
Dpoly=sym2poly(D1);
Npoly=Npoly/Dpoly(1);
Dpoly=Dpoly/Dpoly(1);
A_34=tf(Npoly,Dpoly);
[N1,D1]=numden(inv_sI_A(4,1));
Npoly=sym2poly(N1);
Dpoly=sym2poly(D1);
Npoly=Npoly/Dpoly(1);
Dpoly=Dpoly/Dpoly(1);
A_41=tf(Npoly,Dpoly);
[N1,D1]=numden(inv_sI_A(4,2));
Npoly=sym2poly(N1);
Dpoly=sym2poly(D1);
Npoly=Npoly/Dpoly(1);
Dpoly=Dpoly/Dpoly(1);
A_42=tf(Npoly,Dpoly);
[N1,D1]=numden(inv_sI_A(4,3));
Npoly=sym2poly(N1);
Dpoly=sym2poly(D1);
Npoly=Npoly/Dpoly(1);
Dpoly=Dpoly/Dpoly(1);
A_43=tf(Npoly,Dpoly);
[N1,D1]=numden(inv_sI_A(4,4));
Npoly=sym2poly(N1);
Dpoly=sym2poly(D1);
Npoly=Npoly/Dpoly(1);
Dpoly=Dpoly/Dpoly(1);
A_44=tf(Npoly,Dpoly);
ip=[(-A_13*Ip/C+2*A_11*V1/(3*L)-A_12*V1/(3*L)) (A_14*In/C+A_11*V2/(3*L)-2*A_12*V2/(3*L))];
in=[(-A_23*Ip/C+2*A_21*V1/(3*L)-A_22*V1/(3*L)) (A_24*In/C+A_21*V2/(3*L)-2*A_22*V2/(3*L))];
v2=[(-A_43*Ip/C+2*A_41*V1/(3*L)-A_42*V1/(3*L)) (A_44*In/C+A_41*V2/(3*L)-2*A_42*V2/(3*L))];
v1=[(-A_33*Ip/C+2*A_31*V1/(3*L)-A_32*V1/(3*L)) (A_34*In/C+A_31*V2/(3*L)-2*A_32*V2/(3*L))];
vo=v1+v2;
vctl_p=(Rsense)*(2*ip+in);
vctl_n=(Rsense)*(-2*in-ip);
Tfb=(Vref/Vout);
Out_matrix=[[v1];[v2]];
Ctl_matrix=[[vctl_p];[vctl_n]];
Ctl_matrix=minreal(Ctl_matrix);
det_Ctl_matrix=Ctl_matrix(1,1)*Ctl_matrix(2,2)-Ctl_matrix(2,1)*Ctl_matrix(1,2);
det_Ctl_matrix=minreal(det_Ctl_matrix);
inv_Ctl_matrix=(1/det_Ctl_matrix)*[[Ctl_matrix(2,2) -Ctl_matrix(1,2)];[-Ctl_matrix(2,1) Ctl_matrix(1,1)]];
inv_Ctl_matrix=minreal(inv_Ctl_matrix);
%Open loop transfer function analysis
Out_matrix=minreal(Out_matrix);
inv_Ctl_matrix=minreal(inv_Ctl_matrix);
Tol=Tfb*[[2] [2]]*(Out_matrix*inv_Ctl_matrix);
Tol2=minreal((Tol(1)+Tol(2)),0.5);
bode(Tol2,{1;100E3});
  2 Comments
Walter Roberson
Walter Roberson on 24 May 2015
I suspect that one of the models is coming out empty after minreal(). The documentation indicates that by default minreal() displays how many states it removes so you should be able to scan through that.
Right at the end you have
Tol2=minreal((Tol(1)+Tol(2)),0.5);
Tol(1) and Tol(2) look like they would be purely numeric objects, so Tol(1)+Tol(2) would be a simple scalar value. What kind of control model is described by a simple scalar? I see other places where you apply minreal() to a scalar. What is the intention of those? If states were minimized out of a scalar, it sounds to me like the result could be the empty vector.
Louange Braxty
Louange Braxty on 26 May 2015
I add the script you attached. it still does not. The problem is with (* Out_matrix inv_Ctl_matrix). Matlab n not seem to do the multiplication of the two matrix vector. Help me please

Sign in to comment.

Answers (1)

Kelvin Lee
Kelvin Lee on 26 Oct 2017
This problem happens frequently when the transfer functions are too complex. It bothers me a lot. If I program my own codes, like bode or nyquist, it won't happen. But it's too inconvenient, I hope the mathwork company can solve it once and for all. Otherwise, most guests may be disappointed.

Categories

Find more on MATLAB in Help Center and File Exchange

Tags

No tags entered yet.

Community Treasure Hunt

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

Start Hunting!