要上能加下QQ627915537那就好了。如下是我的程序;
function y=dutext('D:\job\matlab\wujiang\数据20140509\矩阵数据\cl60轮廓处理\p3\p3车轮\车轮原始1.txt');fidin=fopen('D:\job\matlab\wujiang\数据20140509\矩阵数据\cl60轮廓处理\p3\p3车轮\车轮原始1.txt');i=1;while ~feof(fidin) tline=fget(fidin); tmp=find(tline==','); l=length(tline); a(i)=str2num(tline(2:tmp-1)); b(i)=str2num(tline(tmp+1:l-1)); i=i+1;endy=[a;b]';end
运行出现在以下错误:
??? function y=dutext('D:\job\matlab\wujiang\数据20140509\矩阵数据\cl60轮廓处理\p3\p3车轮\车轮原始1.txt'); |Error: Function definitions are not permitted in this context.
下面为文件格式。
function y=dutext(x);
fidin=fopen(x);
i=1;
while ~feof(fidin)
tline=fget(fidin);
tmp=find(tline==',');
l=length(tline);
a(i)=str2num(tline(2:tmp-1));
b(i)=str2num(tline(tmp+1:l-1));
i=i+1;
end
y=[a;b]';
end追问
谢谢指教,因为我没有学过matlab,所以基础也基本为零,只是自己在网上学了几个函数而已。你的回答我这次好像明白了,但是会出现dutext.m第5行错误。为什么?
你看到你定义的函数第一行后边的分号了么,把他删掉应该就可以了。另外,一定要确认你新建的是个function哦,然后再把函数贴进去。我已经再次测试过了。
追问总算可以了,第5行:fget改为fgetl就可以了。但是读取的数据组y只有4个小数点,怎么修改程序使之读取的数据精确呢?
matlab精度控制用digits(n)和vpa()两个函数来控制。n确定了你需要小数点后面多少位。原函数作以下修改。
function y=dutext(x);
fidin=fopen(x);
i=1;
digits(10);%!
while ~feof(fidin)
tline=fgetl(fidin);
tmp=find(tline==',');
l=length(tline);
a(i)=vpa(str2num(tline(2:tmp-1)));%!
b(i)=vpa(str2num(tline(tmp+1:l-1)));%!
i=i+1;
end
y=[a;b]';
end
你就好人做到底,我追分的。新问题又出现了,那么我要调用好几个这个的.txt数据。来做图。那么这个dutext只能赋一个.txt,如果调用多个.txt如何操作。
追答你就多使用几次就行了。比如你有1.txt,2.txt,3.txt。
那你就这样写喽。
a=dutext('1.txt');
b=dutext('2.txt');
c=dutext('3.txt');
然后你就得到了对应的三个数组a,b,c,你要是有很多个文件,假设是n个,你以后想用循环使用这几个数组,就这样。
A=cell(n);
A{1}=dutext('1.txt');
A{2}=dutext('2.txt');
A{3}=dutext('3.txt');
另外,我看你运行的时候是在matlab的命令窗口。我推荐你新建一个script,然后在里面复制上面的代码,然后点击RUN(一个绿色的箭头),就可以跑了。然后你就得到你想要的数组了。
看你的基础真是很薄弱,最好在编程使用前看看基础知识,这样你理解起来就方便多了。