yaozhezhi333 发表于 2008-3-20 15:10

S 函数 这个程序运行时 说Va未定义?

function output=district0(in)
%
ua=in(1);ub=in(2);uc=in(3);ts=in(4);vcd=in(5);t=in(6);
%输入参考电压ua,ub,uc,%采样时间ts,直流侧电压vcd,导通时间参量t
ur=3*(ua+ub*exp(j*2*pi/3)+uc*exp(j*4*pi/3))/vcd; %转换为电压空间矢量
theta0=angle(ur);%电压空间矢量的相角
%扇区及其角度
if theta0<0       %0<=theta0<2pi
    theta0=theta0+2*pi;
end
si=fix(theta0*3/pi)+1;%求取参考矢量在三电平矢量图中的扇区
theta=rem(theta0,pi/3); %转换到第一扇区后0<=theta<pi/3
%区域判断及对应两电平参考电压
ual=abs(ur)*cos(theta);%空间矢量在alpha和beta轴上的投影
ube=abs(ur)*sin(theta);
h=sqrt(3)/2;             %定义一个常量h
k1=fix(ual+ube*sqrt(3));
k2=fix(ube/h);
uali=ual-k1+0.5*k2;
ubei=ube-k2*h;
if (ubei/uali)<sqrt(3)
    ual0=uali;      %参考矢量转换为两电平时在alpha轴上的投影
    ube0=ubei;      %参考矢量转换为两电平时在beta轴上的投影
    di=k1^2+2*k2;   %参考空间矢量在三电平矢量图中的小区域
else
    ual0=0.5-uali;
    ube0=h-ubei;
    di=k1^2+2*k2+1;
end
%三电平的空间矢量
v00=;v01=;v02=[-1 -1 -1];
v1n=;v1p=;
v2n=;v2p=;
v3n=[-1 -1 0];v3p=;
v4n=[-1 0 0];v4p=;
v5n=[-1 0 -1];v5p=;
v6n=;v6p=;
v7=;
v8=;
v9=;
v10=;
v11=[-1 -1 1];
v12=[-1 0 1];
v13=[-1 1 1];
v14=[-1 1 0];
v15=[-1 1 -1];
v16=;
v17=;
v18=;
%把三电平的各个扇区转换到第一扇区
switch si
    case 1
      v20=v00;
      v21n=v1n;v21p=v1p;v22n=v2n;v22p=v2p;
      v23=v7;v24=v8;v25=v9;
    case 2
      v20=v00;
      v21n=v2n;v21p=v2p;v22n=v3n;v22p=v3p;
      v23=v9;v24=v10;v25=v11;
    case 3
      v20=v00;
      v21n=v3n;v21p=v3p;v22n=v4n;v22p=v4p;
      v23=v11;v24=v12;v25=v13;
    case 4
      v20=v00;
      v21n=v4n;v21p=v4p;v22n=v5n;v22p=v5p;
      v23=v13;v24=v14;v25=v15;
    case 5
      v20=v00;
      v21n=v5n;v21p=v5p;v22n=v6n;v22p=v6p;
      v23=v15;v24=v16;v25=v17;
    case 6
      v20=v00;
      v21n=v6n;v21p=v6p;v22n=v1n;v22p=v1p;
      v23=v17;v24=v18;v25=v7;
end
%三电平变换为两电平
switch di
    case 0
      v0=v20;va=v21n;vb=v22p;
    case 1
      v0=v21n;va=v23;vb=v24;
    case 2
      v0=v24;va=v22n;vb=v21p;
    case 3
      v0=v22p;va=v24;vb=v25;
end
%两电平三个矢量的导通时间导通时间
ta=ts*(ual0-ube0/(2*h));
tb=ts*ube0/h;
t0=ts-ta-tb;
%任意时段输出的电压空间矢量为v
if 0<=t<t0
    v=v0;
    output=pulse(v);
elseif t0<=t<t0+ta
    v=va;
    output=pulse(v);
else
    v=vb;
    output=pulse(v);
end

%三电平脉冲
function p=pulse(in)
v=in;
a=v(1);
b=v(2);
c=v(3);
switch a
    case -1
      pa=;
    case 0
      pa=;
    case 1
      pa=;
end
switch b
    case -1
      pb=;
    case 0
      pb=;
    case 1
      pb=;
end
switch c
    case -1
      pc=;
    case 0
      pc=;
    case 1
      pc=;
end
p=;

yaozhezhi333 发表于 2008-3-20 15:10

大家可以帮我检查上面那个程序的错误吗?

xiaohui-yiyi 发表于 2008-4-5 20:16

s函数是这样的吗

s函数不是有固定模板吗?你这个不是按照模板来的,可以这样写s函数吗

bsppp 发表于 2008-4-6 10:43

s函数应该用固定模板套改才行,自己写的应该不可以吧

yaozhezhi333 发表于 2008-4-7 00:13

S 函数固定的模板是怎样
哪个大虾 可以发个上来
页: [1]
查看完整版本: S 函数 这个程序运行时 说Va未定义?