📄 formulas_1_8__formulas_for_modification.html
字号:
<html><head><meta name="robots" content="index,follow">
<title>算式 1.8. 用算式修改对象</title></head><body bgcolor="#FFFFFF">
<table border=0 cellpadding=0 cellspacing=0><tr><td bgcolor="#CCCC00"><table border=4 cellpadding=9><tr><td align=middle bgcolor="#000000"><font face="Palatino,Times" size=6 color="#999900"><b>
算式 1.8. 用算式修改对象
</b></font></table></table>
<p>
正如可以用算式创建新对象(参看前面的文档),还可以用算式修改已有的对象。只要选中对象,再执行<a href="Modify.html">Modify(修改)</a>选单按钮中的<b><i>Formula...(算式)</i></b>命令。</p>
<h3>
用算式修改Sound(声音)对象</h3>
<p>
用麦克风录制一段低沉的声音。如果不了解如何使用Praat录音,请参考<a href="Intro.html">入门教程</a>。选中列表中的Sound对象,单击<b><i>Play(播放)</i></b>按钮。声音听起来比较轻柔。然后执行<b><i>Modify</i></b>选单按钮中的<b><i>Formula...</b></i>命令并输入</p>
<code>
self * 3<br></code>
<p>
单击OK(确定)后再单击<b><i>Play</i></b>按钮。这时的声音就响亮得多了。这段声音中每个采样点的振幅都已经乘上了因子3。</p>
<h3>
用算式取代Sound对象的内容</h3>
<p>
如果不在算式里面使用<code>self</code>这个字,算式就不与Sound对象原有内容相关。因而如算式</p>
<code>
1/2 * sin (2 * pi * 377 * x)<br></code>
<p>
便会拿一条377 Hz的正弦波来代替原先录制的语音。</p>
<h3>
用算式修改Matrix(矩阵)对象</h3>
<p>
很多种对象都可以当矩阵来看——这些对象无不由若干行列承载数据的元素构成:</p>
<dl>
<dd>
<a href="Sound.html">Sound</a>:只有一行;列表示采样点。
<dd>
<a href="Spectrum.html">Spectrum(声谱)</a>:只有两行(第1行是实部,第2行是虚部);列表示频率。
<dd>
<a href="Spectrogram.html">Spectrogram(三维语图)</a>、<a href="Cochleagram.html">Cochleagram(耳蜗图)</a>:行表示频率;列表示时刻。
<dd>
<a href="Excitation.html">Excitation(兴奋型)</a>:只有一行;列表示频带。
<dd>
<a href="Harmonicity.html">Harmonicity(调和性)</a>:只有一行;列表示时帧。
</dl>
<p>
算式将影响每一行中的每一列。如算式</p>
<code>
self^2<code></code><br></code>
<p>
会计算矩阵全部元素的平方。</p>
<p>
算式首先作用于第1行,并在该行内从第1列起依次计算;行列之间递归展开。比如算式</p>
<code>
self + self [row, col - 1]<br></code>
<p>
将计算每一行的积分。</p>
<h3>
引用对象的当前位置</h3>
<p>
Matrix(或Sound等)对象的当前位置可以用索引下标或者坐标<i>x</i>与<i>y</i>来表示:</p>
<dl>
<dt>
<b>row</b>
<dd>
表示当前行
<dt>
<b>col</b>
<dd>
表示当前列
<dt>
<b>x</b>
<dd>
与当前列相关的<i>x</i>值:
<dd>
对于Sound、Spectrogram、Cochleagram或Harmonicity对象:时刻
<dd>
对于Spectrum对象:频率(赫兹)
<dd>
对于Excitation对象:频率(巴克)
<dt>
<b>y</b>
<dd>
与当前行相关的<i>y</i>值:
<dd>
对于Spectrogram对象:频率(赫兹)
<dd>
对于Cochleagram对象:频率(巴克)
</dl>
<h3>
引用对象本身的内容</h3>
<p>
可以通过索引下标对Matrix(或Sound等)对象所承载数据的值加以引用:</p>
<dl>
<dt>
<b>self</b>
<dd>
引用当前Matrix对象当前行与当前列的值,或者当前Sound对象当前采样点的值。
<dt>
<b>self [<i>列号表达式</i>]</b>
<dd>
引用当前Sound(或Intensity(音强)等)对象中指定采样点注:原文作“当前”采样点,大概是笔误)。<i>列号表达式</i>的值会舍入为最近的整数。如果下标越界(小于1或大于<i>n</i><sub><i>x</sub></i>),表达式的值按0计。
</dl>
<p>
<b>举例</b>:可作积分器的算式</p>
<code>
self [col - 1] + self * dx<br></code>
<dl>
<dt>
<b>self [<i>行号表达式</i>, <i>列号表达式</i>]</b>
<dd>
引用当前Matrix(或Spectrogram等)对象中指定行列上元素的值。各表达式的值均会舍入为最近的整数。
</dl>
<p>
可以通过坐标<i>x</i>与<i>y</i>对Matrix(或Spectrogram等)对象所承载数据的值加以引用:</p>
<dl>
<dt>
<b>o</b> <b>self (<i>x表达式</i>, <i>y表达式</i>)</b>
<dd>
表达式在矩阵内最近的4个元素点之间计算线性差值。
</dl>
<p>
可以通过坐标<i>x</i>对Sound(或Intensity等)对象所承载数据的值加以引用:</p>
<dl>
<dt>
<b>o</b> <b>self (<i>x表达式</i>)</b>
<dd>
表达式在行内最近的2个采样点(或帧)之间计算线性差值。
</dl>
<h3>指向本页的链接</h3>
<ul>
<li><a href="Formulas.html">算式</a>
<li><a href="Formulas_1__My_first_formulas.html">算式 1. 我的第一个算式</a>
<li><a href="Formulas_1_9__Formulas_in_scripts.html">算式 1.9. 在脚本中使用算式</a>
</ul>
<hr>
<address>
<p>© ppgb, December 4, 2002</p>
<p>© 翻译:徐清白,2005年03月27日</p>
</address>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -