{"payload":{"allShortcutsEnabled":false,"fileTree":{"doc":{"items":[{"name":"Harminv.gif","path":"doc/Harminv.gif","contentType":"file"},{"name":"harminv-man.md","path":"doc/harminv-man.md","contentType":"file"},{"name":"harminv.1","path":"doc/harminv.1","contentType":"file"},{"name":"installation.md","path":"doc/installation.md","contentType":"file"},{"name":"library.md","path":"doc/library.md","contentType":"file"}],"totalCount":5},"":{"items":[{"name":"doc","path":"doc","contentType":"directory"},{"name":"m4","path":"m4","contentType":"directory"},{"name":".clang-format","path":".clang-format","contentType":"file"},{"name":".gitignore","path":".gitignore","contentType":"file"},{"name":".travis.yml","path":".travis.yml","contentType":"file"},{"name":"COPYING","path":"COPYING","contentType":"file"},{"name":"COPYRIGHT","path":"COPYRIGHT","contentType":"file"},{"name":"Makefile.am","path":"Makefile.am","contentType":"file"},{"name":"NEWS.md","path":"NEWS.md","contentType":"file"},{"name":"README.md","path":"README.md","contentType":"file"},{"name":"autogen.sh","path":"autogen.sh","contentType":"file"},{"name":"check.h","path":"check.h","contentType":"file"},{"name":"configure.ac","path":"configure.ac","contentType":"file"},{"name":"harminv-int.h","path":"harminv-int.h","contentType":"file"},{"name":"harminv-main.c","path":"harminv-main.c","contentType":"file"},{"name":"harminv.c","path":"harminv.c","contentType":"file"},{"name":"harminv.h","path":"harminv.h","contentType":"file"},{"name":"harminv.pc.in","path":"harminv.pc.in","contentType":"file"},{"name":"mkdist.sh","path":"mkdist.sh","contentType":"file"},{"name":"sines-test.sh","path":"sines-test.sh","contentType":"file"},{"name":"sines.c","path":"sines.c","contentType":"file"}],"totalCount":21}},"fileTreeProcessingTime":6.8635470000000005,"foldersToFetch":[],"repo":{"id":31337213,"defaultBranch":"master","name":"harminv","ownerLogin":"NanoComp","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2015-02-25T21:41:40.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/11775558?v=4","public":true,"private":false,"isOrgOwned":true},"symbolsExpanded":false,"treeExpanded":true,"refInfo":{"name":"master","listCacheKey":"v0:1675647389.6958342","canEdit":false,"refType":"branch","currentOid":"806311830697cdd51ae1a972c9832716e38ecd7b"},"path":"doc/harminv-man.md","currentUser":null,"blob":{"rawLines":null,"stylingDirectives":null,"colorizedLines":null,"csv":null,"csvError":null,"dependabotInfo":{"showConfigurationBanner":false,"configFilePath":null,"networkDependabotPath":"/NanoComp/harminv/network/updates","dismissConfigurationNoticePath":"/settings/dismiss-notice/dependabot_configuration_notice","configurationNoticeDismissed":null},"displayName":"harminv-man.md","displayUrl":"https://github.com/NanoComp/harminv/blob/master/doc/harminv-man.md?raw=true","headerInfo":{"blobSize":"8.04 KB","deleteTooltip":"You must be signed in to make or propose changes","editTooltip":"You must be signed in to make or propose changes","ghDesktopPath":"https://desktop.github.com","isGitLfs":false,"onBranch":true,"shortPath":"450c9e6","siteNavLoginPath":"/login?return_to=https%3A%2F%2Fgithub.com%2FNanoComp%2Fharminv%2Fblob%2Fmaster%2Fdoc%2Fharminv-man.md","isCSV":false,"isRichtext":true,"toc":[{"level":1,"text":"harminv command-line program","anchor":"harminv-command-line-program","htmlText":"harminv command-line program"},{"level":2,"text":"Synopsis","anchor":"synopsis","htmlText":"Synopsis"},{"level":2,"text":"Description","anchor":"description","htmlText":"Description"},{"level":2,"text":"Input","anchor":"input","htmlText":"Input"},{"level":2,"text":"Output","anchor":"output","htmlText":"Output"},{"level":2,"text":"Spurious Modes","anchor":"spurious-modes","htmlText":"Spurious Modes"},{"level":2,"text":"Units","anchor":"units","htmlText":"Units"},{"level":2,"text":"Options","anchor":"options","htmlText":"Options"},{"level":2,"text":"Bugs","anchor":"bugs","htmlText":"Bugs"},{"level":2,"text":"Authors","anchor":"authors","htmlText":"Authors"}],"lineInfo":{"truncatedLoc":"89","truncatedSloc":"58"},"mode":"file"},"image":false,"isCodeownersFile":null,"isPlain":false,"isValidLegacyIssueTemplate":false,"issueTemplate":null,"discussionTemplate":null,"language":"Markdown","languageID":222,"large":false,"planSupportInfo":{"repoIsFork":null,"repoOwnedByCurrentUser":null,"requestFullPath":"/NanoComp/harminv/blob/master/doc/harminv-man.md","showFreeOrgGatedFeatureMessage":null,"showPlanSupportBanner":null,"upgradeDataAttributes":null,"upgradePath":null},"publishBannersInfo":{"dismissActionNoticePath":"/settings/dismiss-notice/publish_action_from_dockerfile","releasePath":"/NanoComp/harminv/releases/new?marketplace=true","showPublishActionBanner":false},"rawBlobUrl":"https://github.com/NanoComp/harminv/raw/master/doc/harminv-man.md","renderImageOrRaw":false,"richText":"

harminv command-line program

\n

Harminv is installed as both a library\nand as a command-line program harminv. This page\ndescribes the usage of the command-line program.

\n

Synopsis

\n
harminv [OPTION]... [freq-min-freq-max]...\n
\n

Description

\n

harminv is a program designed to solve the problem of \"harmonic inversion\": given a time series consisting of a sum of sinusoids (\"modes\"), extract their frequencies and amplitudes. It can also handle the case of exponentially-decaying sinusoids, in which case it extracts their decay rates as well.

\n

harminv is often able to achieve much greater accuracy and robustness than Fourier-transform methods, essentially because it assumes a specific form for the input.

\n

It uses a low-storage \"filter-diagonalization method\" (FDM), as described in V. A. Mandelshtam and H. S. Taylor, \"Harmonic inversion of time signals,\" J. Chem. Phys., vol. 107, p. 6756 (1997). See also erratum, ibid 109, 4128 (1998).

\n

Input

\n

harminv reads in a sequence of whitespace-separated real or complex numbers from standard input, as well as command-line arguments indicating one or more frequency ranges to search, and outputs the modes that it extracts from the data. (It preferentially finds modes in the frequency range you specify, but may sometimes find additional modes outside of that range.) The data should correspond to equally-spaced time intervals, but there is no constraint on the number of points.

\n

Complex numbers in the input should be expressed in the format RE+IMi (no whitespace). Otherwise, whitespace is ignored. Also, comments beginning with # and extending to the end of the line are ignored.

\n

A typical invocation is something like

\n
harminv -t 0.02 1-5 < input.dat
\n

which reads a sequence of samples, spaced at 0.02 time intervals (in ms, say, corresponding to 50 kHz), and searches for modes in the frequency range 1–5 kHz. (See below on units.)

\n

Output

\n

harminv writes four comma-delimited columns to standard output, one line for each mode: frequency, decay constant, Q, amplitude, phase, and error. Each mode corresponds to a function of the form:

\n
amplitude * exp[-i (2π frequency t - phase) - decay t]\n
\n

Here, i is sqrt(-1), t is the time (see below for units), and the other parameters in the output columns are:

\n\n

Spurious Modes

\n

Typically, harminv will find a number of spurious solutions in addition to the desired solutions, especially if your data are noisy. Such solutions are characterized by large errors, small amplitudes, and/or small Q (large decay rates / broad linewidths). You can omit these from the output by the error/Q/amplitude screening options defined below.

\n

By default, modes with error > 0.1 and Q < 10 are automatically omitted, but it is likely that you will need to set stricter limits.

\n

Units

\n

The frequency (and decay) values, both input and output, are specified in units of 1/time, where the units of time are determined by the sampling interval dt (the time between consecutive inputs). dt is by default 1, unless you specify it with the -t dt option.

\n

In other words, pick some units (e.g. ms in the example above) and use them to express the time step. Then, be consistent and use the inverse of those units (e.g. kHz = 1/ms) for frequency.

\n

Note that the frequency is the usual 1/period definition; it is not the angular frequency.

\n

Options

\n\n

Bugs

\n

Report bugs by filing a github issue.

\n

Authors

\n

Written by Steven G. Johnson. Copyright © 2004–2017 by the Massachusetts Institute of Technology.

\n
","renderedFileInfo":null,"shortPath":null,"symbolsEnabled":true,"tabSize":8,"topBannersInfo":{"overridingGlobalFundingFile":false,"globalPreferredFundingPath":null,"showInvalidCitationWarning":false,"citationHelpUrl":"https://docs.github.com/github/creating-cloning-and-archiving-repositories/creating-a-repository-on-github/about-citation-files","actionsOnboardingTip":null},"truncated":false,"viewable":true,"workflowRedirectUrl":null,"symbols":{"timed_out":false,"not_analyzed":false,"symbols":[{"name":"harminv command-line program","kind":"section_1","ident_start":2,"ident_end":30,"extent_start":0,"extent_end":8231,"fully_qualified_name":"harminv command-line program","ident_utf16":{"start":{"line_number":0,"utf16_col":2},"end":{"line_number":0,"utf16_col":30}},"extent_utf16":{"start":{"line_number":0,"utf16_col":0},"end":{"line_number":89,"utf16_col":0}}},{"name":"Synopsis","kind":"section_2","ident_start":207,"ident_end":215,"extent_start":204,"extent_end":265,"fully_qualified_name":"Synopsis","ident_utf16":{"start":{"line_number":6,"utf16_col":3},"end":{"line_number":6,"utf16_col":11}},"extent_utf16":{"start":{"line_number":6,"utf16_col":0},"end":{"line_number":10,"utf16_col":0}}},{"name":"Description","kind":"section_2","ident_start":268,"ident_end":279,"extent_start":265,"extent_end":990,"fully_qualified_name":"Description","ident_utf16":{"start":{"line_number":10,"utf16_col":3},"end":{"line_number":10,"utf16_col":14}},"extent_utf16":{"start":{"line_number":10,"utf16_col":0},"end":{"line_number":18,"utf16_col":0}}},{"name":"Input","kind":"section_2","ident_start":993,"ident_end":998,"extent_start":990,"extent_end":1960,"fully_qualified_name":"Input","ident_utf16":{"start":{"line_number":18,"utf16_col":3},"end":{"line_number":18,"utf16_col":8}},"extent_utf16":{"start":{"line_number":18,"utf16_col":0},"end":{"line_number":32,"utf16_col":0}}},{"name":"Output","kind":"section_2","ident_start":1963,"ident_end":1969,"extent_start":1960,"extent_end":3663,"fully_qualified_name":"Output","ident_utf16":{"start":{"line_number":32,"utf16_col":3},"end":{"line_number":32,"utf16_col":9}},"extent_utf16":{"start":{"line_number":32,"utf16_col":0},"end":{"line_number":47,"utf16_col":0}}},{"name":"Spurious Modes","kind":"section_2","ident_start":3666,"ident_end":3680,"extent_start":3663,"extent_end":4170,"fully_qualified_name":"Spurious Modes","ident_utf16":{"start":{"line_number":47,"utf16_col":3},"end":{"line_number":47,"utf16_col":17}},"extent_utf16":{"start":{"line_number":47,"utf16_col":0},"end":{"line_number":53,"utf16_col":0}}},{"name":"Units","kind":"section_2","ident_start":4173,"ident_end":4178,"extent_start":4170,"extent_end":4732,"fully_qualified_name":"Units","ident_utf16":{"start":{"line_number":53,"utf16_col":3},"end":{"line_number":53,"utf16_col":8}},"extent_utf16":{"start":{"line_number":53,"utf16_col":0},"end":{"line_number":61,"utf16_col":0}}},{"name":"Options","kind":"section_2","ident_start":4735,"ident_end":4742,"extent_start":4732,"extent_end":8031,"fully_qualified_name":"Options","ident_utf16":{"start":{"line_number":61,"utf16_col":3},"end":{"line_number":61,"utf16_col":10}},"extent_utf16":{"start":{"line_number":61,"utf16_col":0},"end":{"line_number":82,"utf16_col":0}}},{"name":"Bugs","kind":"section_2","ident_start":8034,"ident_end":8038,"extent_start":8031,"extent_end":8118,"fully_qualified_name":"Bugs","ident_utf16":{"start":{"line_number":82,"utf16_col":3},"end":{"line_number":82,"utf16_col":7}},"extent_utf16":{"start":{"line_number":82,"utf16_col":0},"end":{"line_number":86,"utf16_col":0}}},{"name":"Authors","kind":"section_2","ident_start":8121,"ident_end":8128,"extent_start":8118,"extent_end":8231,"fully_qualified_name":"Authors","ident_utf16":{"start":{"line_number":86,"utf16_col":3},"end":{"line_number":86,"utf16_col":10}},"extent_utf16":{"start":{"line_number":86,"utf16_col":0},"end":{"line_number":89,"utf16_col":0}}}]}},"copilotInfo":null,"copilotAccessAllowed":false,"csrf_tokens":{"/NanoComp/harminv/branches":{"post":"Jd0vG7pRvHraQiFETH2vMbntij9xNtzMfYCiQVweQq-x2j_pflqnpbmDCri0nHOdhUmlIN0brtc7GjHhx_VMGg"},"/repos/preferences":{"post":"hlAAaq7HpcfHhIJtjdsWVs7UOW-5tTxoPu4kduhKjrnYbYqCEnqkMEIe_q2naU6J4k19FLXV5-e_KJWRmhADvg"}}},"title":"harminv/doc/harminv-man.md at master · NanoComp/harminv"}