2016-04-25 20 views
0

を理解する:は、このコードを理解しようと評価し、ループ

A = 

    1  2  3 

A = [1 2 3] 

T = A(:,1:end); 

fprintf('\nvalues ', T); 

Aは寸法のマトリックスX 3 1

私はこのコードを実行すると、これは印刷されるが作成しますなぜTは暗黙的に評価されず、スクリーンに印刷されないのですか?

私はこの構文に慣れていません:A(:,1:end);これはマトリックスとループの最初の列を選択していますか?

+0

コードの行なしセミコロンはその行の結果をコマンドウィンドウにエコーします。その行の評価方法は変わりません。セミコロンが使用されているため、MATLAB式を作成するときにコマンドウィンドウで出力が不必要に表示されることはありません。また、 'T = A(:、1:end);'はむしろ余計です...すべての行(1次元: ':')にアクセスするような方法で行列 'A'にアクセスし、最初の列から最後までのすべての列を取得します(2次元: '1:end')。基本的に行列全体をコピーしているので、 'T = A; 'と言うこともできます。 – rayryeng

答えて

3

「暗黙的に」画面で評価されるコード行は、末尾が;です。セミコロン演算子は、その行の結果の印刷をに抑止します。あなたのコードで

A = [1 2 3] % No semicolon -> print 

T = A(:,1:end); % semicolon -> no print 

endキーワードは、印刷とは何の関係もありません。そのキーワードは、Matlabで不正行為を行うのに非常に役立ちます。あなたは「マトリックスendの最後の列まで1から始まる列インデックスからすべての値:)を取る。Aの基本的に、この場合は、すべての値MATLABを語っている。あなたが試すことができA(:,1:end)を言っ

A(1:end,1:end)、より有用な例については、同じことを返しチェック。

、あなたは、あなたがA(2:end,:)を使用することになり、すべての行列しかし最初の行をお勧めします。

関連する問題