<phyphox version="1.14" locale="en">
  <title>Schwingung im Aufzug</title>
  <category>Physik im Advent</category>
  <description>
    Untersuche die Schwingungen eines Aufzugs.
  </description>
  <data-containers>
    <container size="64">accInZ</container>
    <container size="64">accZ</container>
    <container size="64">time</container>
    <container size="1">recording_length</container>
    <container size="1">subrange_start</container>
    <container init="256">samples</container>
    <container size="1">actual_samples</container>
    <container size="1">actual_samples+1</container>
    <container size="1">period</container>
    <container size="1">count-1</container>
    <container size="1">count+1</container>
    <container size="1">count/2</container>
    <container size="1">count</container>
    <container size="1">t0</container>
    <container size="1">t1</container>
    <container size="1">Dt</container>
    <container size="1">dt</container>
    <container size="1">maxf</container>
    <container size="1">df</container>
    <container size="1">arate</container>
    <container size="64">frequency</container>
    <container size="64">fftZX</container>
    <container size="64">fftZY</container>
    <container size="32">halfFrequency</container>
    <container size="32">halfFFTtempX</container>
    <container size="32">halfFFTtempY</container>
    <container size="32">halfFFTtempX2</container>
    <container size="32">halfFFTtempY2</container>
    <container size="32">fftZ</container>
    <container size="32">fft</container>
    <container size="1">f0</container>
  </data-containers>
  <input>
    <sensor type="accelerometer" rate="20" average="true" rateStrategy="generate">
      <output component="z">accInZ</output>
      <output component="t">time</output>
    </sensor>
  </input>
  <views>
    <view label="Spectrum">
      <value label="Stärkste Frequenz" unit="[[unit_short_hertz]]">
        <input>f0</input>
      </value>
      <separator height="1"/>
      <graph label="Spektrum" logX="false" logY="true" labelX="Frequency" unitX="[[unit_short_hertz]]" labelY="FFT Mag" unitY="[[unit_short_arbitrary_unit]]">
        <input axis="x">halfFrequency</input>
        <input axis="y">fft</input>
      </graph>
    </view>
  </views>
  <analysis sleep="0.1">
    <append>
      <input>accInZ</input>
      <output clear="false">accZ</output>
    </append>
    <count>
      <input clear="false">accZ</input>
      <output>count</output>
    </count>
    <subtract>
      <input clear="false">count</input>
      <input type="value">1</input>
      <output>count-1</output>
    </subtract>
    <first>
      <input clear="false">time</input>
      <output>t0</output>
    </first>
    <subrange>
      <input as="from" clear="false">count-1</input>
      <input as="length" type="value">1</input>
      <input as="in" clear="false">time</input>
      <output>t1</output>
    </subrange>
    <subtract>
      <input clear="false">t1</input>
      <input clear="false">t0</input>
      <output>Dt</output>
    </subtract>
    <divide>
      <input clear="false">Dt</input>
      <input clear="false">count-1</input>
      <output>dt</output>
    </divide>
    <count>
      <input clear="false">accZ</input>
      <output>actual_samples</output>
    </count>
    <add>
      <input clear="false">actual_samples</input>
      <input type="value">1</input>
      <output>actual_samples+1</output>
    </add>
    <multiply>
      <input clear="false">actual_samples</input>
      <input clear="false">dt</input>
      <output>period</output>
    </multiply>
    <divide>
      <input type="value">1</input>
      <input clear="false">period</input>
      <output>df</output>
    </divide>
    <fft>
      <input clear="false">accZ</input>
      <output as="re">fftZX</output>
      <output as="im">fftZY</output>
    </fft>
    <count>
      <input clear="false">fftZX</input>
      <output>count</output>
    </count>
    <divide>
      <input clear="false">actual_samples</input>
      <input type="value">2</input>
      <output>count/2</output>
    </divide>
    <divide>
      <input type="value">0.5</input>
      <input clear="false">dt</input>
      <output>maxf</output>
    </divide>
    <divide>
      <input type="value">1</input>
      <input clear="false">dt</input>
      <output>arate</output>
    </divide>
    <ramp>
      <input as="start" type="value">0</input>
      <input as="stop" clear="false">arate</input>
      <input as="length" clear="false">actual_samples+1</input>
      <output>frequency</output>
    </ramp>
    <subrange>
      <input as="from" type="value">1</input>
      <input as="to" clear="false">count/2</input>
      <input as="in" clear="false">frequency</input>
      <input as="in">fftZX</input>
      <input as="in">fftZY</input>
      <output>halfFrequency</output>
      <output>halfFFTtempX</output>
      <output>halfFFTtempY</output>
    </subrange>
    <multiply>
      <input clear="false">halfFFTtempX</input>
      <input>halfFFTtempX</input>
      <output>halfFFTtempX2</output>
    </multiply>
    <multiply>
      <input clear="false">halfFFTtempY</input>
      <input>halfFFTtempY</input>
      <output>halfFFTtempY2</output>
    </multiply>
    <add>
      <input>halfFFTtempX2</input>
      <input>halfFFTtempY2</input>
      <output>fftZ</output>
    </add>
    <power>
      <input as="base">fftZ</input>
      <input as="exponent" type="value">0.5</input>
      <output>fft</output>
    </power>
    <max>
      <input as="y" clear="false">fft</input>
      <input as="x" clear="false">halfFrequency</input>
      <output as="position" clear="false">f0</output>
    </max>
  </analysis>
  <export>
    <set name="FFT Spectrum">
      <data name="Frequency (Hz)">halfFrequency</data>
      <data name="Absolute Amplitude (a.u.)">fft</data>
    </set>
  </export>
</phyphox>
