[英]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.