簡體   English   中英

在我的MATLAB代碼的哪幾行訪問變量?

[英]At which lines in my MATLAB code a variable is accessed?

我在MATLAB的源代碼開頭定義了一個變量。 現在,我想知道此變量在哪幾行產生影響。 換句話說,我希望看到所有讀取該變量的行。 這個願望不僅包括當前函數中的所有訪問,還包括使用此變量作為輸入參數的子函數中的可能訪問。 這樣,我可以快速查看更改此變量的影響。

在MATLAB中有可能這樣做嗎? 相應行的圖形標記會很好,但命令行輸出可能更加實用。

您可能總是使用“查找文件”來搜索特定的關鍵字或表達式。 在我的R2012a / Windows版本中,使用鍵盤快捷鍵[CTRL] + [SHIFT] + [F]Edit > Find Files...

結果將是在指定文件夾中找到的所有文件中找到搜索到的字符串的行的列表。 請查看搜索對話框中的選項,以獲取更多詳細信息和靈活性。

后來編輯:感謝@zinjaai,我注意到,@ TC88需要,這個工具應該跟蹤的功能/子功能內部的變量名的效果。 我認為這是:

  1. 很難實現。 遍歷所有可能的值並在每個可能的條件表達式上分支的問題是...很難。 我認為這是困難問題

  2. 在90%的情況下,函數的輸出受輸入影響的假設是正確的。 但是輸入和輸出是同一條語句的一部分(分配函數的結果),因此尋找將變量用作參數的位置應足以確定受影響的輸出變量。

在某些情況下,函數會更改handle -type的參數(因為該參數未復制但被引用)。 該副作用將打破假設2,這是為什么要這樣做的主要原因之一。1.概述發生這些副作用的情況是困難的,最好假設所有這些副作用都已修改。

其他一些情況從本質上是無法確定的,因為它們不取決於計算機狀態,而是取決於“外部世界”的狀態。 示例:假設一個調用uigetfile 當用戶選擇文件時,該函數返回char類型;對於用戶選擇不選擇文件的情況,該函數返回double類型。 顯然,這兩種情況將被區別對待。 在用戶決定之前,您如何知道創建/修改了哪些變量?

結論:我認為憑直覺,再加上MATLAB Debugger(用於運行時),Find Files(用於使用變量的快速搜索)和depfun (用於快速識別功能依賴)便宜得多。 但是我想錯了。 :-)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM