首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SOM算法Matlab帮助

SOM算法Matlab帮助
EN

Stack Overflow用户
提问于 2010-04-19 22:22:54
回答 3查看 797关注 0票数 1

我正在尝试从图形用户界面向som_read_data传递一个txt文件……我创建了一个函数,该函数从图形用户界面获取一个txt文件,然后将其传递给som_read_data..but。我正在获取一些errors...here,这是一些errors.....any的列表吗?

代码语言:javascript
复制
??? 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);
EN

回答 3

Stack Overflow用户

发布于 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)

票数 2
EN

Stack Overflow用户

发布于 2010-04-19 23:05:37

该错误指示您没有先打开文件,或者FOPEN无法正确打开该文件。如果在调用FOPEN后返回的文件标识符值为-1,则表示发生了错误(例如试图打开不存在的文件)。

编辑:

根据您的注释,您构建的文件路径不正确。您应该创建B,如下所示:

代码语言:javascript
复制
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

票数 2
EN

Stack Overflow用户

发布于 2010-04-20 00:17:31

看起来您正在使用SOMTOOLBOX中的som_read_data函数。该函数假设获取数据文件名作为参数。但是您使用textread将文件读取到m变量中,并将其传递给Prog_som.m,后者将其传递给som_read_data。我不知道Prog_som.m是否对m变量做了什么。无论如何,尝试传递b而不是m:

代码语言:javascript
复制
[filename, pathname] = uigetfile( ...
B = fullfile(pathname,filename);
x = prog_som(B);

还要确保你的文件是SOM_PAK格式的。你可以在som_read_data.m内部的注释中找到它的描述。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2668126

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档