我们怎样才能克服八度音阶的缓冲限制?

时间:2011-01-27 05:50:19

标签: octave

当我们尝试使用一个限制为100的for循环实现程序时,octave无法显示所有结果。这是缓冲区的问题。我们怎么能克服这个?

1 个答案:

答案 0 :(得分:0)

尝试用矩阵表达问题。 MATLAB和Octave针对矩阵运算进行了优化。以下是MATLAB文档网站关于vectorizing loops的内容的摘录:

  

MATLAB软件使用矩阵语言,这意味着它是为矢量和矩阵运算而设计的。您通常可以使用利用此设计的矢量化算法来加速代码。 矢量化意味着将forwhile循环转换为等效的矢量或矩阵运算。

它们还提供了一个矢量化循环的简单示例,用于计算1001值的正弦值,范围从0到10:

i = 0;
for t = 0:.01:10
    i = i + 1;
    y(i) = sin(t);
end

到相同代码的矢量化版本:

t = 0:.01:10;
y = sin(t);

MATLAB中有更多细节Code Vectorization Guide 以及这几个相关问题中的一些例子: