2016-04-25 76 views
0

试图了解此代码:了解评估和环

A = [1 2 3] 

T = A(:,1:end); 

fprintf('\nvalues ', T); 

A创建尺寸1的矩阵X 3

当运行该代码,这被打印:

A = 

    1  2  3 

为什么T不是隐式评估并打印到屏幕上?

我不熟悉这个语法:A(:,1:end);这是选择矩阵的第一列和循环?

+0

一行代码,而不分号将该行的结果回显到命令窗口。它不会改变这条线的评估方式。使用分号可以在创建MATLAB表达式时不必在命令窗口中看到输出。另外,'T = A(:,1:end);'是相当多余的......它表示以访问所有行(第一维:':')的方式访问矩阵'A'和从第一列中获取所有列(到第二维:'1:end')。你可能只是说'T = A;'因为你基本上是复制整个矩阵。 – rayryeng

回答

3

在屏幕“隐式”评估的代码行不是以;结尾的代码行。分号运算符抑制该行结果的打印。

在你的代码,

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

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

end关键字无关的打印。它是一个非常有用的用于在Matlab中进行vetorized操作的关键字。

A(:,1:end)你告诉MATLAB“采取一切开始于1直到矩阵end的最后一列由列索引:)的值。基本上,在这种情况下,A所有的值。你可以试试A(1:end,1:end)并检查返回同样的事情。

对于一个更有用的例子,你可能希望所有的矩阵第一行,那么你可以使用A(2:end,:)