繁体   English   中英

SOM算法Matlab帮助

[英]SOM Algorithm Matlab HELP

我试图将txt文件从GUI传递到som_read_data ...我创建了一个函数,该函数从GUI接收txt文件,然后将其传递给som_read_data ..但是我遇到了一些错误...这里是一些错误的列表.....任何有想法的人吗?

??? 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);

该错误表明您的文件标识符可能无效。 你检查了吗?

你得到的文件标识符( fid在你的函数som_read_data调用) fid=fopen(fileName) ,其中fileName是文件的名称,如果是在当前目录或文件名,包括路径名,否则。

要进行调试,您可能需要调用[fid,message] = fopen(fileName)并检查message是否为空。 如果不是,则打开文件时出错,因此, fid不是有效的文件标识符。

编辑您可能想看看message说什么。 我敢打赌,这类似于“找不到文件”,这是因为文件不在路径中,或者因为您错过了扩展名。

EDIT2在第169行中使用之前,请仔细检查som_read_data以查找哪个函数正在返回fid 。如果该行显示fid = fopen(m) ,则应将文件名传递给som_read_data ,即调用som_read_data(B)

该错误表明您没有首先打开文件,或者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

它看起来像您使用som_read_data从功能SOMTOOLBOX 该函数假定获取数据文件名作为参数。 但是您将读取带有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内的注释中找到它的描述。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM