PDA

查看完整版本 : [MATLAB混合编程] 希望高手帮我看一下这个程序有什么问题,为什么运行不起来?


luyihong2100
2010-05-26, 20:25
function kk=rddat1
global net ed dd sd dd1 pn x0 y0 m1 m2 m3 ms pp e d sid md g f dir ni si ma s t az
global pathname net_name s_datafile b_datafile;
x0=[];y0=[];e=[];d=[];sid=[];g=[];f=[];dir=[];si=[];ni=[];s=[];t=[];az=[];
pn=[];
if(isempty(pathname)||isempty(net_name))
[filename,pathname]=uigetfile('*.txt','Input filename');
i=find('.'==filename);
net_name=filename(1:i-1);
end
fit1=fopen(strcat(pathname,net_name,s_datafile),'rt');
if(fit1==-1)
msgbox('Input File or Path is not correct','Warning','warn');
return;
end
%open a file to read
fit2=fopen(strcat(pathname,net_name,b_datafile),'wt');
if(fit2==-1)
msgbox('Input File or Path is not correct','Warning','warn');
return;
end
net=fscanf(fit1,'%d',1);
fprintf(fit2,'%5d\n',net);
[a]=fscanf(fit1,'%d',3);
ed=a(1);dd=a(2);dd1=a(3);
fprintf(fit2,'%5d',ed,dd,dd1);
fprintf(fit2,'\n');
sd=ed+dd;
[pn]=fscanf(fit1,'%d',sd);
fprintf(fit2,'%5d%5d%5d%5d%5d%5d%5d%5d%5d%5d%5d\n',pn);
fprintf(fit2,'\n');
[a]=fscanf(fit1,'%f',2*ed);
for i=1:ed
x0(i)=a(2*i-1);
y0(i)=a(2*i);
fprintf(fit2,'%15.3f%15.3f\n',x0(i),y0(i));
end
fprint(fit2,'\n');
[a]=fscanf(fit1,'%d',3);
m1=a(1);m2=a(2);m3=a(3);
fprintf(fit2,'%5d%5d%5d\n',m1,m2,m3);
isid=0;
if(m1>0)
fprintf(fit2,'side\n');
[a]=fscanf(fit1,'%f',2);
ms=a(1);
pp=a(2);
fprintf(fit2,'%6.2F%6.2f\n',ms,pp);
[a]=fscanf(fit1,'%d%d%f',3*m1);
for i=1:m1
e(i)=a(3*i-2);d(i)=a(3*i-1);sid(i)=a(3*i);
fprintf(fit2,'%5d%5d%15.3f\n',e(i),d(i),sid(i));
end
[e,i1]=chkdat(sd,pn,e);
[d,i2]=chkdat(sd,pn,d);
i3=0;
for i=1:m1
if(e(i)==d(i))
i3=1;
fprintf(fit2,'**%5d%5d%5d**\n',i,e(i),d(i));
end
fprintf(fit2,'%5d%5d%15.3f\n',e(i),d(i),sid(i));
end
isid=i1+i2+i3;
end
idir=0;
if(m2>0)
fprintf(fit2,'direction\n');
md=fscanf(fit1,'%f',1);
fprintf(fit2,'%6.2f\n',md);
[a]=fscanf(fit1,'%d%d%f',3*m2);
for i=1:m2
n1(i)=a(3*i-2);
n2(i)=a(3*i-1);
unk(i)=a(3*i);
fprintf(fit2,'%5d%5d%15.3f\n',n1(i),n2(i),unk(i));
end
[n1,i1]=chkdat(sd,pn,n1);
[n2,i2]=chkdat(sd,pn,n2);
i3=0;
for j=1:m2
if(n1(j)==n2(j))
i3=1;
fprintf(fit2,'**%5d%5d%5d**\n',j,n1(j),n2(j));
end
end
ik=1;
si(1)=1;
for i=1:sd
ii=0;
for j=1:m2
if(n1(j)==i)
ii=ii+1;
g(ik)=n1(j);
f(ik)=n2(j);
dir(ik)=unk(j);
fprintf(fit2,'%5d%5d%15.5f\n',g(ik),f(ik),dir(ik));
dir(ik)=dms_rad(dir(ik));
ik=ik+1;
end
end
ni(i)=ii;
si(i+1)=si(i)+ni(i);
end
fprintf(fit2,'%5d%5d%5d%5d%5d%5d%5d%5d%5d%5d%5d\n',ni);
fprintf(fit2,'\n');
fprintf(fit2,'%5d%5d%5d%5d%5d%5d%5d%5d%5d%5d%5d\n',si);
fprintf(fit2,'\n');
idir=i1+i2+i3;
end
iaz=0;
if(m3>0)
fprintf(fit2,'Azimut\n');
ma=fscanf(fit1,'%f',1);
fprintf(fit2,'%6.2f\n',ma);
[a]=fscanf(fit1,'%d%d%f',3*m3);
for i=1:m3
s(i)=a(3*i-2);
t(i)=a(3*i-1);
az(i)=a(3*i);
fprintf(fit2,'%5d%5d%15.3f\n',s(i),t(i),az(i));
end
[s,i1]=chkdat(sd,pn,s);
[t,i2]=chkdat(sd,pn,t);
i3=0;
for j=1:m3
if(s(j)==t(j))
i3=1;
fprintf(fit2,'**%5d%5d%5d**\n',j,s(j),t(j));
end
az(i)=dms_rad(az(i));
end
iaz=i1+i2+i3;
end
kk=isid+idir+iaz;
if(kk>0)
msgbox('Error by function rddat1','Warning','warn');
return;
end
fclose('all');
open(strcat(pathname,net_name,b_datafile));
return
数据如下:
3
2 3 20
309 307 312 312 311
3307245.025 40573116.485 3308277.151 40570795.625
307 312 2542.152
307 310 1731.358
309 311 1326.311
310 312 1673.824
309 312 1630.460
311 312 1826.488
1.2
310 307 47.095
310 312 143.440
312 309 0.000
312 311 44.403
312 310 246.123
312 307 288.470
311 312 158.365
311 309 218.251
309 311 0.000
309 312 75.311
309 307 146.524
307 309 157.442
307 312 195.095
307 310 236.006