2014-02-14 166 views
1

我發現了一些關於MATLAB的非常荒謬的東西。在MATLAB會話中不可能打開兩個文件,甚至不能通過鏈接引用具有相同名稱的兩個文件,即使在不同的文件夾中(正如任何文件系統所要求的那樣)。實際上,不可能有兩個相同名稱的文件可以在MATLAB路徑上訪問,而不會在尋址文件時產生歧義。如何管理MATLAB和Simulink文件名?

在我相當大的解決方案中,我決定給出文件的全名,包括它在模型中的位置,以允許唯一的文件名並且不違反此限制。到目前爲止,這已經以一種有點醜陋的方式解決了這個問題。不過,我剛剛發現了第二個問題,即第一個問題,即文件名僅限於63個字符。現在我不能有一個符合任何標準和明智的名字。

看起來唯一的答案是選擇半合集文件名,這些文件名合併成一個全球文件名並希望捕獲足夠的信息以識別文件及其目的。

如何管理大型系統?

(道歉的語氣,我得到我的繫繩與MathWorks軟件的結束。)

+0

您可以在MATLAB路徑中擁有兩個或多個文件名相同的文件,但爲避免一個文件出現任何問題而影響另一個文件,應該使用絕對路徑引用它們。這確保每次調用時都使用正確的文件。 我相信你可以在編輯器中打開兩個同名的MATLAB文件。儘管Simulink模型可能無法做到這一點。 – am304

+0

如果互相映射的文件是函數,是否可以使用完整路徑調用函數?我想這至少不是優雅。 –

+0

不知道...也許下面的幫助:http://www.mathworks.co.uk/help/matlab/matlab_prog/function-precedence-order.html – am304

回答

2

這是MATLAB的與path和把數千個檔案到它的「方便」政策的缺點。

如果您正在討論您正在加載的「數據文件」(通過load)等,則解決方案是使用絕對路徑名。無論如何,這是正確的方式,imho。

您可以使用不同的功能具有相同的名稱,有以下幾種可能這樣做:

  1. cd到包含你想調用的函數的文件夾。這將當前目錄中的函數放置到路徑的「頂部」。不好,但它的工作原理。
  2. 將不同的同名函數放入包中,並通過package1.fun()package2.fun()調用它們。
  3. 以面向對象的方式做事情。這大大減少了m文件的原始數量。
+0

我主要使用Simulink模型和Subversion存儲庫來管理它們。因此,我試圖通過相互鏈接儘可能多地創建模型文件,從而使變更管理成爲可能。感謝有關軟件包的信息,但我不知道MATLAB有任何名稱空間的概念。 –

1

this link,變量名的確限制在63個字符。文件路徑不限於63個字符,所以我不明白你爲什麼在給出確切的位置時遇到問題。

+1

他可能使用對文件路徑的引用作爲變量。就像'filepath ='ReallyReallyLongPathNameThatExceeds63CharactersBecauseOfAStrangeFileSystem。m'' – scenia

+0

關閉,我正在使用功能名稱與文件名相匹配的功能文件。現在的問題是保存一個Simulink庫文件,這是我發現文件名大小限制的地方。 –