2012-09-30 56 views
1

在其他所有語言中,如果我有一個矩陣,如果我調用單維索引,結果將是一個數組。我不知道爲什麼在Matlab中如果你拿一個單矩陣的索引,你會得到一個單一的元素,這是愚蠢的。
無論如何在C:如何提取矩陣的行

mat[4][4]; 

墊[0]是一個數組。

在Matlab中:

mat=[1 2; 3 4]; 

如何採取矩陣的第一行? mat(1)是1,而不是[1 2]。

編輯:還有一個問題,我有此功能的問題:

function str= split(string, del) 

index=1; 
found=0; 

str=['' ; '']; 

for i=1:length(string) 
    if string(i)==del 
     found=1; 
     index=1; 
    elseif found==1 
     str(2,index)=string(i); 
     index=index+1; 
    else 
     str(1,index)=string(i); 
     index=index+1; 
    end 
end 

end 

這有時會返回一個矩陣和有時的陣列。例如,如果我使用split('FF','。'),我得到'FF'作爲結果,但是如果我想返回一個矩陣呢?我甚至無法選擇矩陣的維數,在這種情況下,弱類型語言是一個很大的缺點。

+2

(從angainor和馬爾萬的正確答案一起)你應該開始一個新的問題要問你第二個問題。 –

+1

對於第二個問題:'FF'是一個矩陣 - 儘管這可能不是你的意思,所以你可能需要澄清。順便說一句,你可能想要貶低你的咆哮。 C以外的大多數語言都不同於C語言。如果你不明白它們是如何工作的,那並不意味着它們很愚蠢,而是說你無法適應新的語言。 – Jonas

回答

9

你必須說出你想要的列。 :代表維度中的所有指數,因此取第一行

mat(1,:) 

這不是愚蠢的,而是有用的。如果您僅使用一個索引處理矩陣,則會隱式轉換爲矢量。這使您可以選擇使用線性索引(請參閱sub2ind)。

+0

有關極其靈活的冒號語法的更多信息是[here](http://www.mathworks.com/help/matlab/ref/colon.html)。 – cjh

+0

我有另一個問題。 –

+0

@RamyAlZuhouri要更改尺寸,請使用[reshape](http://www.mathworks.se/help/matlab/ref/reshape.html)函數。你沒有數據拷貝就是這樣做的,這就是你如何查看你的數據。當然,矢量中的元素數量必須可以被您指定的尺寸整除。我會建議發佈另一個問題,並準確解釋你需要什麼。 – angainor

5

這將提取的第二排

vector = mat(2,:) 

,這將提取的第二列

vector = mat(:,2) 

您可以使用

vector = mat(end,:) 

要提取的最後一排

希望禰小號幫助您

2

Matrix Indexing in MATLAB

如果僅使用一個下標索引矩陣A,MATLAB 甜點的,就好像它的元素是在長的列向量精神不振, 由沿着走列連續

我只希望它看起來並不愚蠢到你了