【问题标题】:Create an array from a loop in MATLAB?从MATLAB中的循环创建一个数组?
【发布时间】:2015-09-27 00:10:54
【问题描述】:

这是我的 Matlab 代码:

Length = length(High);
i = 1;
j = 20;

while i < Length
     HighestHIGH(i) = max(High(i:j));
     i = i+1;
     j = j+1;
end

这会在 HighestHIGH 行出现错误。我想要完成的是:让我们假设 High 是一个长度为 100(长度 = 100)的数组。我想在新数组中获得最多 20 个。例如:

HighestHIGH[1] = max(High(1:20));
HighestHIGH[2] = max(High(2:21));
HighestHIGH[3] = max(High(3:22));
...
HighestHIGH[80] = max(High(81:100));

【问题讨论】:

  • “一个”错误是永远不够的。什么样的错误? “索引超过矩阵尺寸”?当i==Length-1时,则j==Length+18`超过High的大小。
  • @Daniel,添加它作为答案怎么样?绝对应该这样做(即使最初的问题是“为什么这不起作用?”。

标签: arrays matlab loops


【解决方案1】:

i==Length-1 时,则j==Length+18 超过High 的大小。你的循环上限太高了。

我会这样写:

N=20;
HighestHIGH=zeros(length(High)-N+1);
for i=1:length(High)-N+1
   HighestHIGH(i) = max(High(i:i+N-1));
end

注意,根据你的需要,最后一个词是HighestHIGH(81)=max(High(81:100))

【讨论】:

    猜你喜欢
    • 2012-09-21
    • 1970-01-01
    • 2019-08-28
    • 1970-01-01
    • 2020-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多