登录论坛

查看完整版本 : MATLAB-遇到子数组问题


poster
2019-12-10, 20:30
我试图在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) 并查看输出-这应该使事情变得清晰。



更多&回答... (https://stackoverflow.com/questions/2393894)