Skip to content

Commit 430ae49

Browse files
author
Documenter.jl
committed
build based on fa3805b
1 parent 0074b03 commit 430ae49

14 files changed

Lines changed: 160 additions & 98 deletions

File tree

dev/.documenter-siteinfo.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{"documenter":{"julia_version":"1.12.4","generation_timestamp":"2026-02-02T06:52:40","documenter_version":"1.16.1"}}
1+
{"documenter":{"documenter_version":"1.17.0","generation_timestamp":"2026-04-05T09:05:30","julia_version":"1.12.5"}}

dev/appendix/index.html

Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.

dev/assets/documenter.js

Lines changed: 28 additions & 22 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dev/assets/warner.js

Lines changed: 61 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,40 @@ function maybeAddWarning() {
3737
closer.addEventListener("click", function () {
3838
document.body.removeChild(div);
3939
});
40-
const href = window.documenterBaseURL + "/../" + window.DOCUMENTER_STABLE;
40+
var target_href =
41+
window.documenterBaseURL + "/../" + window.DOCUMENTER_STABLE;
42+
43+
// try to stay on the same page when linking to the stable version
44+
// get the current page path relative to the version root
45+
var current_page = window.location.pathname;
46+
47+
// resolve the documenterBaseURL to an absolute path
48+
// documenterBaseURL is a relative path (usually "."), so we need to resolve it
49+
var base_url_absolute = new URL(documenterBaseURL, window.location.href)
50+
.pathname;
51+
if (!base_url_absolute.endsWith("/")) {
52+
base_url_absolute = base_url_absolute + "/";
53+
}
54+
55+
// extract the page path after the version directory
56+
// e.g., if we're on /stable/man/guide.html, we want "man/guide.html"
57+
var page_path = "";
58+
if (current_page.startsWith(base_url_absolute)) {
59+
page_path = current_page.substring(base_url_absolute.length);
60+
}
61+
62+
// construct the target URL with the same page path
63+
var target_url = target_href;
64+
if (page_path && page_path !== "" && page_path !== "index.html") {
65+
// ensure target_href ends with a slash before appending page path
66+
if (!target_url.endsWith("/")) {
67+
target_url = target_url + "/";
68+
}
69+
target_url = target_url + page_path;
70+
}
71+
72+
// preserve the anchor (hash) from the current page
73+
var current_hash = window.location.hash;
4174

4275
// Determine if this is a development version or an older release
4376
let warningMessage = "";
@@ -51,12 +84,35 @@ function maybeAddWarning() {
5184
"This documentation is for an <strong>older version</strong> that may be missing recent changes.<br>";
5285
}
5386

54-
warningMessage +=
55-
'<a href="' +
56-
href +
57-
'">Click here to go to the documentation for the latest stable release.</a>';
87+
// Create the link element with same-page navigation
88+
const link = document.createElement("a");
89+
link.href = target_url + current_hash;
90+
link.textContent =
91+
"Click here to go to the documentation for the latest stable release.";
92+
93+
// If we're trying to stay on the same page, verify it exists first
94+
if (page_path && page_path !== "" && page_path !== "index.html") {
95+
link.addEventListener("click", function (e) {
96+
e.preventDefault();
97+
// check if the target page exists, fallback to homepage if it doesn't
98+
fetch(target_url, { method: "HEAD" })
99+
.then(function (response) {
100+
if (response.ok) {
101+
window.location.href = target_url + current_hash;
102+
} else {
103+
// page doesn't exist in the target version, go to homepage
104+
window.location.href = target_href;
105+
}
106+
})
107+
.catch(function (error) {
108+
// network error or other failure - use homepage
109+
window.location.href = target_href;
110+
});
111+
});
112+
}
58113

59114
div.innerHTML = warningMessage;
115+
div.appendChild(link);
60116
div.appendChild(closer);
61117
document.body.appendChild(div);
62118
}

dev/convolutions/index.html

Lines changed: 2 additions & 2 deletions
Large diffs are not rendered by default.

dev/estimation/index.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@
88
julia&gt; esprit(x, M, p, Fs)
99
2-element Vector{Float64}:
1010
2502.2704154274957
11-
399.8420984461712</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/JuliaDSP/DSP.jl/blob/c1c10b3de2127a3db8eb6a5823ddc74c3134621e/src/estimation.jl#L9-L66">source</a></section></details></article><article><details class="docstring" open="true"><summary id="DSP.Estimation.jacobsen"><a class="docstring-binding" href="#DSP.Estimation.jacobsen"><code>DSP.Estimation.jacobsen</code></a><span class="docstring-category">Function</span></summary><section><div><pre><code class="language-julia hljs">jacobsen(x::AbstractVector, Fs::Real = 1.0)</code></pre><p>Estimate the largest frequency in the complex signal <code>x</code> using Jacobsen&#39;s algorithm <sup class="footnote-reference"><a id="citeref-Jacobsen2007" href="#footnote-Jacobsen2007" class="footnote-ref">[Jacobsen2007]</a><span class="footnote-preview" id="fn-Jacobsen2007"></span></sup>. Argument <code>Fs</code> is the sampling frequency. All frequencies are expressed in Hz.</p><p>If the signal <code>x</code> is real, the estimated frequency is guaranteed to be positive, but it may be highly inaccurate (especially for frequencies close to zero or to <code>Fs/2</code>).</p><p>If the sampling frequency <code>Fs</code> is not provided, then it is assumed that <code>Fs = 1.0</code>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/JuliaDSP/DSP.jl/blob/c1c10b3de2127a3db8eb6a5823ddc74c3134621e/src/estimation.jl#L77-L92">source</a></section></details></article><article><details class="docstring" open="true"><summary id="DSP.Estimation.quinn"><a class="docstring-binding" href="#DSP.Estimation.quinn"><code>DSP.Estimation.quinn</code></a><span class="docstring-category">Function</span></summary><section><div><pre><code class="language-julia hljs">quinn(x::Vector, f0::Real, Fs::Real = 1.0 ; tol = 1e-6, maxiters = 20)
11+
399.8420984461712</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/JuliaDSP/DSP.jl/blob/fa3805b11e8d08bc20f2050febb939d903295ab3/src/estimation.jl#L9-L66">source</a></section></details></article><article><details class="docstring" open="true"><summary id="DSP.Estimation.jacobsen"><a class="docstring-binding" href="#DSP.Estimation.jacobsen"><code>DSP.Estimation.jacobsen</code></a><span class="docstring-category">Function</span></summary><section><div><pre><code class="language-julia hljs">jacobsen(x::AbstractVector, Fs::Real = 1.0)</code></pre><p>Estimate the largest frequency in the complex signal <code>x</code> using Jacobsen&#39;s algorithm <sup class="footnote-reference"><a id="citeref-Jacobsen2007" href="#footnote-Jacobsen2007" class="footnote-ref">[Jacobsen2007]</a><span class="footnote-preview" id="fn-Jacobsen2007"></span></sup>. Argument <code>Fs</code> is the sampling frequency. All frequencies are expressed in Hz.</p><p>If the signal <code>x</code> is real, the estimated frequency is guaranteed to be positive, but it may be highly inaccurate (especially for frequencies close to zero or to <code>Fs/2</code>).</p><p>If the sampling frequency <code>Fs</code> is not provided, then it is assumed that <code>Fs = 1.0</code>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/JuliaDSP/DSP.jl/blob/fa3805b11e8d08bc20f2050febb939d903295ab3/src/estimation.jl#L77-L92">source</a></section></details></article><article><details class="docstring" open="true"><summary id="DSP.Estimation.quinn"><a class="docstring-binding" href="#DSP.Estimation.quinn"><code>DSP.Estimation.quinn</code></a><span class="docstring-category">Function</span></summary><section><div><pre><code class="language-julia hljs">quinn(x::Vector, f0::Real, Fs::Real = 1.0 ; tol = 1e-6, maxiters = 20)
1212

1313
quinn(x::Vector, Fs::Real = 1.0 ; kwargs...)
1414

15-
quinn(x::Vector ; kwargs...)</code></pre><p>Algorithms by Quinn and Quinn &amp; Fernandes for frequency estimation. Given a signal <code>x</code> and an initial guess <code>f0</code>, estimate and return the frequency of the largest sinusoid in <code>x</code>. <code>Fs</code> is the sampling frequency. All frequencies are expressed in Hz.</p><p>If the initial guess <code>f0</code> is not provided, then a guess is calculated using Jacobsen&#39;s estimator. If the sampling frequency <code>Fs</code> is not provided, then it is assumed that <code>Fs = 1.0</code>.</p><p>The following keyword arguments control the algorithm&#39;s behavior:</p><ul><li><code>tol</code>: the algorithm stops when the absolute value of the difference between two consecutive estimates is less than <code>tol</code>. Defaults to <code>1e-6</code>.</li><li><code>maxiters</code>: the maximum number of iterations to run. Defaults to <code>20</code>.</li></ul><p>Returns a tuple <code>(estimate, reachedmaxiters)</code>, where <code>estimate</code> is the estimated frequency, and <code>reachedmaxiters</code> is <code>true</code> if the algorithm finished after running for <code>maxiters</code> iterations (this may indicate that the algorithm did not converge).</p><p>If the signal <code>x</code> is real, then the algorithm used is <sup class="footnote-reference"><a id="citeref-Quinn1991" href="#footnote-Quinn1991" class="footnote-ref">[Quinn1991]</a><span class="footnote-preview" id="fn-Quinn1991"></span></sup>. If the signal is complex, the algorithm is <sup class="footnote-reference"><a id="citeref-Quinn2009" href="#footnote-Quinn2009" class="footnote-ref">[Quinn2009]</a><span class="footnote-preview" id="fn-Quinn2009"></span></sup>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/JuliaDSP/DSP.jl/blob/c1c10b3de2127a3db8eb6a5823ddc74c3134621e/src/estimation.jl#L117-L152">source</a></section></details></article><section class="footnotes is-size-7"><ul><li class="footnote" id="footnote-Roy1986"><a class="tag is-link" href="#citeref-Roy1986">Roy1986</a>R Roy, A Paulraj and T Kailath, ESPRIT - A subspace approach to estimation of parameters of cisoids in noise, IEEE Trans. Acoustics, Speech, Signal Process., 34, 1340-1342 (1986). <a href="http://ieeexplore.ieee.org/abstract/document/1164935/">http://ieeexplore.ieee.org/abstract/document/1164935/</a>.</li><li class="footnote" id="footnote-Jacobsen2007"><a class="tag is-link" href="#citeref-Jacobsen2007">Jacobsen2007</a>E Jacobsen and P Kootsookos, &quot;Fast, Accurate Frequency Estimators&quot;, Chapter 10 in &quot;Streamlining Digital Signal Processing&quot;, edited by R. Lyons, 2007, IEEE Press.</li><li class="footnote" id="footnote-Quinn1991"><a class="tag is-link" href="#citeref-Quinn1991">Quinn1991</a>B Quinn and J Fernandes, &quot;A fast efficient technique for the estimation of frequency&quot;, Biometrika, Vol. 78 (1991).</li><li class="footnote" id="footnote-Quinn2009"><a class="tag is-link" href="#citeref-Quinn2009">Quinn2009</a>B Quinn, &quot;Recent advances in rapid frequency estimation&quot;, Digital Signal Processing, Vol. 19 (2009), Elsevier.</li></ul></section></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../periodograms/">« <code>Periodograms</code> - periodogram estimation</a><a class="docs-footer-nextpage" href="../windows/"><code>Windows</code> - window functions »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.16.1 on <span class="colophon-date" title="Monday 2 February 2026 06:52">Monday 2 February 2026</span>. Using Julia version 1.12.4.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html>
15+
quinn(x::Vector ; kwargs...)</code></pre><p>Algorithms by Quinn and Quinn &amp; Fernandes for frequency estimation. Given a signal <code>x</code> and an initial guess <code>f0</code>, estimate and return the frequency of the largest sinusoid in <code>x</code>. <code>Fs</code> is the sampling frequency. All frequencies are expressed in Hz.</p><p>If the initial guess <code>f0</code> is not provided, then a guess is calculated using Jacobsen&#39;s estimator. If the sampling frequency <code>Fs</code> is not provided, then it is assumed that <code>Fs = 1.0</code>.</p><p>The following keyword arguments control the algorithm&#39;s behavior:</p><ul><li><code>tol</code>: the algorithm stops when the absolute value of the difference between two consecutive estimates is less than <code>tol</code>. Defaults to <code>1e-6</code>.</li><li><code>maxiters</code>: the maximum number of iterations to run. Defaults to <code>20</code>.</li></ul><p>Returns a tuple <code>(estimate, reachedmaxiters)</code>, where <code>estimate</code> is the estimated frequency, and <code>reachedmaxiters</code> is <code>true</code> if the algorithm finished after running for <code>maxiters</code> iterations (this may indicate that the algorithm did not converge).</p><p>If the signal <code>x</code> is real, then the algorithm used is <sup class="footnote-reference"><a id="citeref-Quinn1991" href="#footnote-Quinn1991" class="footnote-ref">[Quinn1991]</a><span class="footnote-preview" id="fn-Quinn1991"></span></sup>. If the signal is complex, the algorithm is <sup class="footnote-reference"><a id="citeref-Quinn2009" href="#footnote-Quinn2009" class="footnote-ref">[Quinn2009]</a><span class="footnote-preview" id="fn-Quinn2009"></span></sup>.</p></div><a class="docs-sourcelink" target="_blank" href="https://github.com/JuliaDSP/DSP.jl/blob/fa3805b11e8d08bc20f2050febb939d903295ab3/src/estimation.jl#L117-L152">source</a></section></details></article><section class="footnotes is-size-7"><ul><li class="footnote" id="footnote-Roy1986"><a class="tag is-link" href="#citeref-Roy1986">Roy1986</a>R Roy, A Paulraj and T Kailath, ESPRIT - A subspace approach to estimation of parameters of cisoids in noise, IEEE Trans. Acoustics, Speech, Signal Process., 34, 1340-1342 (1986). <a href="http://ieeexplore.ieee.org/abstract/document/1164935/">http://ieeexplore.ieee.org/abstract/document/1164935/</a>.</li><li class="footnote" id="footnote-Jacobsen2007"><a class="tag is-link" href="#citeref-Jacobsen2007">Jacobsen2007</a>E Jacobsen and P Kootsookos, &quot;Fast, Accurate Frequency Estimators&quot;, Chapter 10 in &quot;Streamlining Digital Signal Processing&quot;, edited by R. Lyons, 2007, IEEE Press.</li><li class="footnote" id="footnote-Quinn1991"><a class="tag is-link" href="#citeref-Quinn1991">Quinn1991</a>B Quinn and J Fernandes, &quot;A fast efficient technique for the estimation of frequency&quot;, Biometrika, Vol. 78 (1991).</li><li class="footnote" id="footnote-Quinn2009"><a class="tag is-link" href="#citeref-Quinn2009">Quinn2009</a>B Quinn, &quot;Recent advances in rapid frequency estimation&quot;, Digital Signal Processing, Vol. 19 (2009), Elsevier.</li></ul></section></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../periodograms/">« <code>Periodograms</code> - periodogram estimation</a><a class="docs-footer-nextpage" href="../windows/"><code>Windows</code> - window functions »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.17.0 on <span class="colophon-date" title="Sunday 5 April 2026 09:05">Sunday 5 April 2026</span>. Using Julia version 1.12.5.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html>

0 commit comments

Comments
 (0)