MATLAB - 子阵列有问题

时间:2010-03-06 19:52:17

标签: matlab sub-array

我试图在MATLAB中使用子数组而没有运气。

这就是我在做的事情:

a = randint(latticeSize, 1, [0 1]);

% a 1st attempt which works but sucks 
localPattern = [a(i-1) a(i) a(i+1)];

以上工作正常,但我想用以下内容概括:

% this is how I'd like to do it as more general
localPattern = a(i-1 : i+1);

两者之间有什么区别吗?显示器显示相同的结果但如果我在代码中使用不同的替代品,我会得到非常不同的结果(我得到了我想要的第一个)

如果需要其余的代码,我可以提供它,但如果有人能看到上面的内容,那么就没有必要了。

1 个答案:

答案 0 :(得分:1)

记住:在Matlab中(差不多),一切都是矩阵,至少有两个维度,即使其中一些是“单一”维度。在你的情况下,

[a(i-1) a(i) a(i+1)]

是一行,

a(i-1 : i+1)

是您的案例中的一列,因为a是一列。要在两种情况下获得相同的结果,您可以使用

a = randint(1, latticeSize, [0 1]);

或转置列

localPattern = a(i-1 : i+1)';

取决于代码其余部分的内容。

通常,[]会水平连接事物,索引()会使尺寸“方向”保持不变。

你可以运行:

a = rand(10, 1) 
i=3 
localPattern = [a(i-1) a(i) a(i+1)] 
localPattern = a(i-1 : i+1) 

并查看输出 - 这应该澄清一些事情。