2013-03-22 78 views
1

我在Matlab上比較新。 我正在嘗試爲類似下面的命令創建一個別名。有沒有辦法在matlab R2011b中做命令別名?

run('full/path/to/some/script'). 

我特別希望能夠寫東西相當於bash的

alias myAlias = run('full/path/to/some/script') 

然後可以輸入myAlias並獲得儘可能右側同樣的效果。

我已經看過的文件here,但我仍然得到錯誤Undefined function or variable 'alias'當我嘗試使用它,即使我在提示符下第一類syms,所以我相信,要麼我沒有正確導入工具箱或本在R2011b中不是一項功能。

一個額外的要求是,即使在我呼叫clear之後,我想要別名仍然保留,這應該清除工作區中的所有其他活動變量。

+0

來自符號工具箱的「別名」不是用於此目的。 – Memming 2013-03-22 14:16:16

回答

3

例如:

f = @() run('foldername\scriptname') 

然後就寫f()將執行scriptname。 這裏我使用了一個匿名函數,如果需要的話可以添加更多內容。

+1

這是一個可怕的解決方案,避免使用'eval'。如果你想要一個匿名函數,至少應該執行'f = @()run('path/to/script')'。此外,該解決方案不能滿足不被「clear」清除的要求。當然是 – erikced 2013-03-22 08:23:08

+1

!只是'跑(...)'會做,更優雅毫無疑問。我會編輯我的答案。但總的來說,爲什麼「eval」是一個可怕的**解決方案? – bla 2013-03-22 08:26:25

+4

在這種情況下**可怕**可能不是正確的措辭,因爲命令是一個靜態字符串,也就是說它是安全的,但是一般情況下,如果你發現自己在Matlab中使用'eval',你可能解決了你的問題辦法。 SO有很多關於使用'eval'的討論,如果您有興趣,請查看它們。對於某些Matlab趣味性,請查看'str2num('system(''dir'')')'的輸出 – erikced 2013-03-22 08:44:32

0

你可以讓@ natan的答案容忍清除工作區,使其成爲一個m文件。 在myAlias.m中,放入run('full/path/to/some/script')。我相信你知道這個解決方案,但你可能不想這樣做,因爲由此產生的凌亂的文件系統。

您可以簡單地將m文件添加到某個文件夾並使用addpath('where/ever/you/put/the/script')使其可訪問。

相關問題