求助各位高手:求变压器励磁电流程序出错,谁能帮我改改,小女子感激涕零
求助:求变压器励磁电流的程序哪里出错了,谁能指点指点我,帮忙看看啊?程序如下:
clear all
disp(['磁路-电路耦合lhq_dc04,开始...']);
t1=clock;
disp(['Time: ',int2str(fix(t1(4))),': ',int2str(fix(t1(5))),': ',int2str( fix(t1(6)))]);
load bh.mat;
Ii=((39+13)*2)/1008/1000*bh(:,1);% i=HL/1000N
Fi=26*37/1e6*bh(:,2); % Φ=BS/e6
%DESCRT=1000;
xx=min(Ii):max(Ii);%将Ii中数据全部赋给xx
%fiti=interp1(Ii,Fi,xx,'spline');
num=length(xx);%取得xx的长度,即等于H中数据点个数
N=num %输出num的值
%ydif=(fiti(2:1:num)-fiti(1:1:num-1))/max(Ii)*DESCRT;
%xdif=xx(1:1:num-1);
xxx=zeros(1,num);
for M=1:num
% xxx(M+num-1)=xx(M);
FI(M)=Fi(M)%FI(M+num-1)=fiti(M)+Fi(73);
%FI(M)=-fiti(num-M+1)+Fi(73);
end
TM=10000;
i=zeros(1,TM);
t1=clock;
disp(['非线性迭代开始...']);
disp(['Time: ',int2str(fix(t1(4))),': ',int2str(fix(t1(5))),': ',int2str( fix(t1(6)))]);
dt=5e-5;
i(1)=0;
i1(1)=0;
for M=1:TM
N=1:num;
a=i(M);
while (a>=xxx(N))
N=N+1;
if(N==length(xxx))
N=N-1;
break;
end
end
dfidt=(Fi(N+1)-Fi(N))/(xxx(N+1)-xxx(N));%di/dt=[Φ(n+1)-Φ(n)]/
i(M+1)=dt*(220*1.414*sin(314*M*dt)-75*i(M))/1008/dfidt+i(M);%Φ(n+1)-Φ(n)=/N*dt
end
%t=0:dt:3000*dt
%figure(13)
%plot(t,i,'r-')
hold on
plot(i,'r');
t1=clock;
disp(['程序计算结束.']);
disp(['Time: ',int2str(fix(t1(4))),': ',int2str(fix(t1(5))),': ',int2str( fix(t1(6)))]);
运行后报错如下:
磁路-电路耦合lhq_dc04,开始...
Time: 10: 56: 22
N =
1
FI =
-0.0014
非线性迭代开始...
Time: 10: 56: 22
??? Index exceeds matrix dimensions.
Error in ==> xiugai at 35
while (a>=xxx(N)) 按照错误来看,好像是你的N超出了矩阵的下标范围。 有可能是M和N的维数不一样吧? 回复 3# renzando
是啊 M是一维,N怎么是二维的了,这是怎么回事呢?并且我要求的FI是需要迭代的,怎么会只有一个值FI=0.0014呢?谢谢您的答复 回复 2# yjhou
谢谢您!按照您的建议我将第十二行“ N=num%输出num的值”删除,将第三十三行N=1:num改成N=1后运行又出现这样的错误[],这可如何是好?,附件怎么保存不了啊?再试试 回复 5# dengpin
从程序来看,你的N是多维的数组。num=length(xx)
你逐条调试吧,看看显示出来的信息是什么样的,再好判断。 回复 6# yjhou
谢谢您版主!我附件上传不了 试了好几次,没想到不小心成了灌水帖了 不好意思!好的 我再调试调试 急死我了! 回复 7# dengpin
你好,我也有变压器励磁电流的问题可以向你请教么 问题解决了吗?我也是遇到这种问题
页:
[1]