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