想知道具体的MATLAB语法意味着什么

时间:2015-05-27 01:04:30

标签: matlab

我想通过以下方式知道DX ( (j+1): (j+FM(i)) )究竟是什么:

FM = [3,4,5]
CM = [0.0,1.0,2.0,3.0]


j = 0;
for i = 1:length(FM)
    DX ( (j+1): (j+FM(i)) )  =  ( CM(i+1) - CM (i) )/ FM (i);
end

3 个答案:

答案 0 :(得分:1)

这是一种索引矩阵的方法。当你看到像matrix(expr1 : expr2)这样的东西时,它正在索引一个矩阵的范围,从expr1求值开始到任何expr2求值结束。例如DX(1:5)将给出矩阵的前5个元素(MATLAB使用基于1的索引)。我不确定我是否理解使用j的意义,因为它永远不会在循环体内发生变化并始终为0,但这样做会在循环的第一次迭代中给出元素1到3 (FM(i),i = 1给你回3),第二次迭代中的元素1到4(FM(i),i = 2给你回4),以及最后一次迭代中的元素1到5(FM( i)用i = 3给你回5)。

答案 1 :(得分:1)

DX ( (j+1): (j+FM(i)) )是一个向量,以j+1的{​​{1}}元素开头,包含DX之前的所有元素。

如果j+FM(i)DX=[0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15]j=4FM=[3 7 5 9],那么i=2DX ( (j+1): (j+FM(i)) )=DX(5:11)的第5到第11个元素, DX

答案 2 :(得分:1)

让我们把它分解。

一般来说,X(A:B)表示我们指的是A的{​​{1}}到B元素。因此,如果XA=1,则B=2指的是X的第1和第2个元素。

在您提供的示例中,我们有:

X(A:B),表示代码从DX((j+1):(j+FM(i)))元素到DX元素引用(j+i)。从代码中,(j+FM(i))j=0用于迭代i的长度。

总而言之,在循环的第一遍中,代码引用FM,在第二遍中它引用DX(1:3),在第三遍和最后一遍中它引用{ {1}}。

现在,在您发布的代码中,该引用用于在上述索引处对变量DX(1:4)进行赋值。具体来说,每次通过循环时,它都会尝试将DX(1:5)分配给DX的索引部分。

由于编写代码的方式,前两个循环可能会将值分配给(CM(i+1) - CM(i))/ FM (i)DX,但最后一次迭代似乎通过写入DX(1:3)来过度所有这些值。