Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
![]() |
#1 |
高级会员
注册日期: 2019-11-21
帖子: 3,006
声望力: 66 ![]() |
![]()
我试图在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) 并查看输出-这应该使事情变得清晰。 更多&回答... |
![]() |
![]() |