Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 其它 > 资料存档
资料存档 资料存档
 
 
主题工具 显示模式
旧 2019-12-10, 20:30   #1
poster
高级会员
 
注册日期: 2019-11-21
帖子: 3,006
声望力: 66
poster 正向着好的方向发展
帖子 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); 两者之间有什么区别吗?显示屏显示出相同的结果,但是如果我在代码中使用不同的替代方法,则会得到非常不同的结果(第一个得到的结果)。

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



回答:

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



更多&回答...
poster 当前离线   回复时引用此帖
 


发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛禁用 表情符号
论坛启用 [IMG] 代码
论坛启用 HTML 代码



所有时间均为北京时间。现在的时间是 01:02


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