2013-06-06 74 views
4

我只是在矩陣的特定列上使用max函數,語法讓我想知道:Matlab:max(A,[],dim)中的第二個參數是什麼意思?

作爲第二個參數傳遞的這個空矩陣是什麼意思?

max(A,[],dim) 

我知道這可能是將它與max(A,i)分開做比較。但是,爲什麼一個空矩陣?

它有一定的意義嗎?這種用於其他功能的參數是這樣嗎?

+1

還沒有測試過這個,但是現在可以跳過'〜'來跳過最近Matlab版本中的輸入和輸出參數。我想通常的解決方案最終會變成:'max(A,〜,dim)' –

+1

@ DennisJaheruddin,我不知道'〜'。謝謝(你的)信息。目前,我測試了它,'[]'不能用'〜'替換(至少在本例中不是這樣)。 – Mahm00d

+1

當我們調用一個函數時,我不相信'〜'可以作爲輸入參數的佔位符。只在argouts列表中。作爲一個輸入arg,它只能在函數定義的參數列表(即'foo.m'的第一行)中作爲一種說法「這個函數實現忽略了這個參數,不管調用者傳入什麼」 。 –

回答

8

其實,你的猜測是正確的。由於Matlab不是強類型語言,並且沒有經典的函數重載技術,函數必須根據上下文猜測參數的含義。 Mathworks希望將單個矩陣中的最大值和單個函數中的兩個數組中的最大值合併。

因此他們需要以某種方式分開這些情況。他們使用空矩陣[]作爲佔位符。否則,他們將無法分開案件max(A, dim)max(A, B)。他們本可以使用任何特殊變量,但是[]是基本構造。

+0

+1爲好的解釋。作爲一個方面說明:你是否有任何其他的功能與'[]'(除了最小/最大)相同的用法?我很想知道這是Matlab中的一般事情還是僅僅在這種情況下。 – Mahm00d

+1

@ Mahm00d它通常用於優化函數中,如'fmincon'用於獲取最終的'options'參數,而不指定可能不相關的所有不等式。這是相當普遍的,具有更復雜的功能需要很多參數。 – Dan

+0

@丹,所以基本上它用於跳過一些參數,對吧?在默認參數? – Mahm00d

2

它允許您比較兩個相等大小的矩陣來查找元素最大值。請參閱docs。使用[]作爲輸入只是向前跳到稍後輸入的一種方式。

+0

據我在文檔中看到的那樣,這是'dim'參數,而不是空矩陣。 – Mahm00d

+0

@ Mahm00d對不起,你是正確的,我正在考慮第二個輸出,而不是第二個輸入。我現在要糾正它。 – Dan

1

max函數默認進行值對比較。輸入max(1,2)顯然會輸出2。作爲另一個例子,使用max(x,0)是執行x的半波整流的簡便方式,將x的每個值與0的單值進行比較。爲了將單個矩陣的元素與該矩陣中包含的值進行比較,可以將第二個參數指定爲空矩陣[]。這作爲函數的標誌來比較一個矩陣內的值。

在整個文檔中,您會看到許多Matlab函數都使用空值[]。這通常表示要使用默認值,或者更改該功能的操作模式。

相關問題