我正在尝试从图形用户界面向som_read_data传递一个txt文件……我创建了一个函数,该函数从图形用户界面获取一个txt文件,然后将其传递给som_read_data..but。我正在获取一些errors...here,这是一些errors.....any的列表吗?
??? Error using ==> ftell
Invalid file identifier. Use fopen to generate a valid file identifier.
Error in ==> som_read_data at 169
fpos1 = ftell(fid); c1 = 0; % read first non-comment line
Error in ==> prog_som at 3
sD = som_read_data(m);发布于 2010-04-19 23:05:10
错误提示您的文件标识符可能无效。你查过了吗?
您可以通过调用fid=fopen(fileName)来获取文件标识符(函数som_read_data中的fid),如果文件在当前目录中,则fileName是文件的名称,否则是包含路径名的文件名。
要进行调试,您可能需要调用[fid,message] = fopen(fileName)并检查message是否为空。如果不是,则打开文件时出错,因此,fid不是有效的文件标识符。
编辑你可能想看看message说了些什么。我打赌它类似于'file not file‘,要么是因为文件不在路径上,要么是因为你错过了扩展名。
EDIT2在第169行使用函数之前,请查看som_read_data以查找哪个函数返回了fid。如果代码行显示为fid = fopen(m),那么您应该向som_read_data传递一个文件名,即调用som_read_data(B)。
发布于 2010-04-19 23:05:37
该错误指示您没有先打开文件,或者FOPEN无法正确打开该文件。如果在调用FOPEN后返回的文件标识符值为-1,则表示发生了错误(例如试图打开不存在的文件)。
编辑:
根据您的注释,您构建的文件路径不正确。您应该创建B,如下所示:
B = [pathname,filename]; %# Append filename to the end of pathname
%# Or
B = fullfile(pathname,filename); %# In case pathname doesn't have a file
%# separator (`\` or '/') on the end您颠倒了顺序(B = [filename,pathname];),这将为您提供一个无效的文件路径,因此在尝试使用FOPEN打开文件时也会得到一个无效的文件标识符fid。
发布于 2010-04-20 00:17:31
看起来您正在使用SOMTOOLBOX中的som_read_data函数。该函数假设获取数据文件名作为参数。但是您使用textread将文件读取到m变量中,并将其传递给Prog_som.m,后者将其传递给som_read_data。我不知道Prog_som.m是否对m变量做了什么。无论如何,尝试传递b而不是m:
[filename, pathname] = uigetfile( ...
B = fullfile(pathname,filename);
x = prog_som(B);还要确保你的文件是SOM_PAK格式的。你可以在som_read_data.m内部的注释中找到它的描述。
https://stackoverflow.com/questions/2668126
复制相似问题