Matlab:迭代循环

Posted

技术标签:

【中文标题】Matlab:迭代循环【英文标题】:Matlab: iterative loop [closed] 【发布时间】:2017-07-21 12:30:00 【问题描述】:

我有一个 wav 信号,我在缓冲区 s 中读取样本。我想保存在 新缓冲区 x 位于 10 位置、20、30..110 位置的样本。 我怎样才能做到这一点?我必须编写一个 for 循环,但我该如何编写接触器?

【问题讨论】:

【参考方案1】:

不确定缓冲区是什么意思,但这是从数组中获取该信息的方法。给定s = 1:107,您可以通过发出以下命令获取从位置10 开始的元素:

b = s(10:10:end);

现在,b 等于 10 20 30 40 50 60 70 80 90 100

【讨论】:

【参考方案2】:

我想将位于 10、20、30..110 位置的样本保存在新缓冲区 x 中。我该怎么做?

x = s(10:10:110);

这也可以:

x = s(10*(1:11));

如果您希望缓冲区中的每 10 个样本(而不是您所说的最多 110 个),Houstanb 的解决方案是最好的。

我必须写一个 for 循环,但我该如何写接触器?

如果您必须编写一个 for 循环,那么您可以试试这个:

x = nan(1,11);
for k=1:11
    x(k) = s(k*10);
end

但是从 MATLAB 的角度来看,这不是一个很好的解决方案,因为向量化是首选。

【讨论】:

以上是关于Matlab:迭代循环的主要内容,如果未能解决你的问题,请参考以下文章

Matlab循环保存迭代向量

如何在循环中的每次迭代中保存具有不同名称的文件? MATLAB

如果发生错误,如何在Matlab中重复循环迭代

如何在Matlab的for循环中移动到下一个迭代

matlab循环次数过多出现NAN?

matlab处理循环特别慢的问题