MATLAB爱好者论坛-LabFans.com

MATLAB爱好者论坛-LabFans.com (https://www.labfans.com/bbs/index.php)
-   资料存档 (https://www.labfans.com/bbs/forumdisplay.php?f=72)
-   -   MATLAB-遇到子数组问题 (https://www.labfans.com/bbs/showthread.php?t=23184)

poster 2019-12-10 20:30

MATLAB-遇到子数组问题
 
我试图在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); [B]两者之间有什么区别吗?[/B]显示屏显示出相同的结果,但是如果我在代码中使用不同的替代方法,则会得到非常不同的结果(第一个得到的结果)。

如果需要其余的代码,我可以提供,但是如果有人可以看到上面的代码,则没有必要。



[B]回答:[/B]

记住:在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) 并查看输出-这应该使事情变得清晰。



[url=https://stackoverflow.com/questions/2393894]更多&回答...[/url]


所有时间均为北京时间。现在的时间是 04:51

Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.