簡體   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