2013-07-17 32 views
0

我有以下Matlab代碼片段,我不得不轉換爲VBScript。但是,我不明白爲什麼最後一行甚至是必要的。MATLAB:爲什麼轉置單維數組

clear i 
for i = 1:numb_days 
    doy(i) = floor(dt_daily(i) - datenum(2012,12,31,0,0,0)); 
end 
doy = doy'; 

回顧過去的代碼的其餘部分,這種情況發生在很多地方有一維數組(?)代替被調換其他地方。當談到這兩種語言時,我是一個新手,並且在Stack上發佈了一個問題,因爲我在找到答案時是一個探祕,而不是在這種情況下。提前致謝。

+1

可能要避免'矩陣維度必須同意'錯誤。嘗試'[1 2] - [1; 2]'。 – Oleg

+1

我認爲你是對的。顯然,MATLAB把單維數組當作矩陣?這意味着該陣列可以是垂直或水平的,因此需要轉置。感謝您的洞察 – javon27

+1

正是@ javon27。 Matlab中的數組不僅僅是存儲數據。認爲數學。畢竟,Matlab確實代表「Matrix Labratory」。例如'[1 2]'* [1 2]','[1 2] * [1 2]''和'[1 2]。* [1 2]'都是不同的。 – horchler

回答

1

MATLAB中的所有「數組」都至少有兩個維度,可以被視爲具有任意數量的維度。這裏的轉置運算符在一行(大小爲[1 N]數組)和一列(大小爲[N 1]數組)之間進行轉換。當涉及到連接數組或執行其他操作時,這可能很重要。

從概念上講,MATLAB數組的維矢量具有跟執行操作所需的一樣多的拖尾1。這意味着,你可以索引任何MATLAB陣列與任意數量的下標,爲您提供不超過界限,就像這樣:

x = magic(4); % 4-by-4 square matrix 
x(2,3,1,1,1) % pick an element 

最後一點:在'運營商的複共軛轉CTRANSPOSE。 .'運算符是普通的TRANSPOSE運算符。

相關問題