2017-04-08 6 views
1

私は3x3行列を作成します。索引作成操作は最初はうまくいきます。Matlab/Octaveでは、転置行列のインデックス作成方法は?

>> K=rand(3) 

K = 

    0.8147 0.9134 0.2785 
    0.9058 0.6324 0.5469 
    0.1270 0.0975 0.9575 

>> K(:,1) 

ans = 

    0.8147 
    0.9058 
    0.1270 

しかし、私は転置行列のインデックス操作を行う場合、MATLABはエラーをスロー:

>> K'(:,1) 
K'(:,1) 
    ↑ 
Error: Unbalanced or unexpected parenthesis or bracket. 
>> (K')(:,1) 
(K')(:,1) 
    ↑ 
Error: Unbalanced or unexpected parenthesis or bracket. 

誰もがこれについてのアイデアを持っていますか?

答えて

4

このようにそれがそうであるように:

K(1,:).' 
% note the dot above (.' - means transpose) 

% however if you want Hermitian then do this 
K(1,:)' 
% (just ' - means Hermitian) 

% well if K is real then it does not matter 
+0

では動作しません。 –

2

簡単な答えですが、この構文は許可されていません(Matlabでは実際には別の回答が指摘するようにOctaveになっています)。あなたは同じ結果のためにかかわらず、次の操作を行うことができ

K(1,:)' 

それとも

K = K'; 
K(:,1) 

MATLABはちょうど転置を行うために内部的にインデックスを反転させ、これはあまりにも高価BRません。他の解答者の状態のように、複雑なデータのための.'を使用するか、またはちょうど良い習慣(なぜMathWorksのはなぜ?)

4

オクターブでは、あなたが実際にこれを行うことができます。

注:これは:-)あなたはドットのための私のupvoteを持っているMATLAB

K = 

    0.814700 0.913400 0.278500 
    0.905800 0.632400 0.546900 
    0.127000 0.097500 0.957500 

>> (K.')(:,1) 
ans = 

    0.81470 
    0.91340 
    0.27850 
関連する問題