PDA

查看完整版本 : [MATLAB混合编程] 求助 十万火急MATLAB程序问题


gseed
2011-02-15, 20:29
下面这个MATLAB程序用2009b版本就能正常运行,而在7.0版本里就报错,说没有定义f、 wrongtime和 wrongdata。。。求高人指教!!如果可以的话请稍微回答的详细点。。不胜感激!!!

%按行读取数据
clear all;
fid=fopen('D:\xiaomin.txt','r');
tline=fgets(fid);
data=tline;
while tline ~= -1
tline=fgets(fid);
data=strvcat(data,tline);
end;
fclose(fid);
data=data';

%number1用于统计行数,number2用于统计错误的总个数。
b=find(data=='a');
number1=length(b)/3;
c=find(data==':');
d=find(data=='b');
number2=length(c)-2*number1;
%wrongnum用于统计每行的出错个数,f数组存放出错时':'的位置。
i=1;
j=1;
k=1;
col=1;
n=1;
for i=1:length(c)
if(b(k)<c(i))
if(d(k)>c(i))
f(j)=c(i);
j=j+1;
n=n+1;
else
wrongnum(col)=n-1;
n=1;
col=col+1;
k=k+3;
end
end
end
wrongnum(col)=n-1;
%wrongtime存放出错的时间值,wrongdata存放出错时间的对应值。

n=1;
for i=1:col
for j=1:wrongnum(i)
k=1;
str1='';
while(data(f(n)-k)~=' ')
str1=strvcat(str1,data(f(n)-k));
k=k+1;
end
q=str2num(str1);
if(k==2)
wrongtime(i,j)=q(1);
elseif(k==3)
wrongtime(i,j)=q(1)+q(2)*10;
elseif(k==4)
wrongtime(i,j)=q(1)+q(2)*10+q(3)*100;
else
wrongtime(i,j)=q(1)+q(2)*10+q(3)*100+q(4)*1000;
end

k=1;
str2='';
while(data(f(n)+k)~=' ')
str2=strvcat(str2,data(f(n)+k));
k=k+1;
end
q=str2num(str2);
if(k==2)
wrongdata(i,j)=q;
else
wrongdata(i,j)=q(1)*10+q(2);
end
n=n+1;
end
end

wrongtime
wrongdata
%把分钟和秒读入到wrongtime数组的行开头

k=1;
for i=1:col
str1='';
str1=strvcat(data(b(k)-3),data(b(k)-2));
q=str2num(str1);
miao=q(1)*10+q(2);

str2=strvcat(data(b(k)-6),data(b(k)-5));
q=str2num(str2);
fen=q(1)*10+q(2);

wrongtime(i,1:end+2)=[fen,miao,wrongtime(i,1:end)];
k=k+3;
end

wrongtime
wrongdata

%画图

startfen=wrongtime(1,1);
startmiao=wrongtime(1,2);
x=[];
y=[];
for i=1:col
x1=(wrongtime(i,3:wrongnum(i)+2)+(wrongtime(i,1)-startfen)*60*10000+(wrongtime(i,2)-startmiao)*10000)/10000;
x=[x,x1];
end

for i=1:col
y1=wrongdata(i,1:wrongnum(i));
y=[y,y1];
end

stem(x,y);