我试图在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);
两者之间有什么区别吗?显示屏显示出相同的结果,但是如果我在代码中使用不同的替代方法,则会得到非常不同的结果(第一个得到的结果)。
如果需要其余的代码,我可以提供,但是如果有人可以看到上面的代码,则没有必要。
回答:
记住:在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)'; 取决于代码其余部分的内容。
通常, []将水平地连接事物,而indexing ()将保持维度的“方向”不变。
您可以运行以下命令:
a = rand(10, 1) i=3 localPattern = [a(i-1) a(i) a(i+1)] localPattern = a(i-1 : i+1) 并查看输出-这应该使事情变得清晰。
更多&回答...