2014-08-29 66 views

回答

5

我不覺得它是違反直覺的。在數學中存在1維的向量(即使它們與標量同構)。此外,一個矩陣可以完美的尺寸爲1x1。

確實可以將單個數字視爲標量,1向量或1x1矩陣。 Matlab的觀點是:

  • 的標量被認爲是一個1x1矩陣
  • 一種Ñ維矢量僅僅是一個1×Ññ×1矩陣
  • 更一般地: 尾隨單身尺寸不計數。例如,還可以考慮尺寸爲2x3x4的3D陣列,例如尺寸爲2x3x4x1x1的5D陣列。這工作沒有錯誤:現在

    >> a = rand(2,3,4); 
    >> a(2,2,2) 
    ans = 
        0.2575 
    >> a(2,2,2,1,1) 
    ans = 
        0.2575 
    

,如果你想檢查是否A是一個向量,矩陣,或一個以上的元素多維數組,使用

numel(A)>1 

numel函數返回其輸入參數的元素數量。

+0

此外,對於空矩陣,只有'ismatrix'返回'[]'''true'。然而,'ismatrix'和'isvector'對於空'零(1,0)'返回'true'或者它是轉置。這符合你的答案,即'n'可以是'0'。 – horchler 2014-08-29 23:51:58

+0

@horchler好點! – 2014-08-29 23:54:54

4

因爲Matlab將標量解釋爲1乘1 數組,請參閱size documentation


因此,根據您的應用程序,你就必須

  • 使用isscalar從標區分向量(因爲它會返回false爲載體)
  • 使用isvector區分矩陣從一個向量(因爲它將返回矩陣的false

Be因爲如果你試圖弄清楚一個變量是一個向量而不是一個標量,並且你使用isvector,那麼標量和向量將返回true - 正如問題中指出的那樣。

相關問題