matlab中冒号的用法

时间:2022-07-27 02:48:08

转自:http://hi.baidu.com/sunsee/item/9985c91895bd88f8ddeecae3 

对于A(四行五列)矩阵,A(2:3,1:2:5)是什么意思?

问题补充:能解释下为什么是一,,五列

满意回答

显示A的第二行与第三行的第一、三、五列。因为矩阵后面如果是圆括号,那么都表示引用,即矩阵元素的位置,下面是例子

A =

     1     2     3     4     5

     4     5     6     7     8

     0     1     4     7     8

     0     2     5     8     7

 

disp(A(2:3,1:2:5)) %3个数字夹着2个冒号的意思:从num1num3 步长num2

 4     6     8

 0     4     8 

补充问题:能解释下为什么是一,,五列

MATLAB定义矩阵的一种方法是A=s:d:fs表示起始值,d表示增量,f表示终点值,125即为11+233+25,不难理解吧,是MATLAB定义矩阵最常用的方法

 

请问matlabA(k,:) 中的冒号什么意思?

A(k,:)冒号是取出第k行的数据,比如

A =

     1     2

     3     4

     5     6

>> A(1,:)

 

ans =

     1     2

>>

请高手指教:matlab中 循环语句中X(8,:,i)里的冒号是什么意思??

答:冒号在MATLAB里基本上两种意思:

1)对于矩阵,冒号表示该维度上的所有元素。

A=

1 2 3

4 5 6

7 8 9

 

A(1,:)表示A的第一行,所有列。

A(1,:)=[ 1 2 3 ]

 

(2)在循环语句中,冒号表示从什么开始,间隔多少,到什么

for i=0 : 2 :10

表示的是i0开始,每次增长2,一直到10,所以循环的第一次i=0,第二次循环i=2,...6i10,循环结束。相当于C语言中的for (i=0;i<=10;i=i+2)

追问

首先感谢您的回答,我也从您说的第二点考虑过。可我还是不太明白这里冒号的位置刚好是在间隔量的位置上。。。。是代表什么意思呢??

是之前已经定好的循环步数。x也是定义好的0矩阵,x=zeros171samples

for i=2:1:samples

....

v=v(i)+(x(8,:,i)*v(i));

难道说是代表任何步长??

回答

不是的。这里的冒号是我说的第一个意思。

现在你的x是一个三维矩阵,你可以理解为x是一个长方体,长宽高分别是171sample,然后每个1*1*1的小立方体里面,存放着矩阵的一个元素。见图。

x(8,,i)就是取出这个长方体的长里面的第8小格,宽里面的所有小格,高里面的第i小格所对应的那些元素。而由于你的宽里面总共就只有1。所以此处不是那些元素而是那个元素,只有1个!

可想而知,如果宽的总数不是1,那么取出的将是这个长方体的一个细长条,往里延伸的,想象一下.

************************************

冒号的两种用法其实很好区分,写在for里面,就是第二种意义,表现为用冒号隔开数字

写在矩阵的括号里面,就是第一种意义,表现为把冒号当数字使用,用逗号隔开数字(或冒号)