From 339a002c555c9ead4ccdc2b99e90cfc11717d4f3 Mon Sep 17 00:00:00 2001 From: h_vogt Date: Sat, 13 Oct 2012 15:56:19 +0200 Subject: [PATCH] fourier.c: output also to vector feature request tracker no. 3575841 --- src/frontend/fourier.c | 32 ++++++++++++++++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) diff --git a/src/frontend/fourier.c b/src/frontend/fourier.c index dcc1419d1..fd7845595 100644 --- a/src/frontend/fourier.c +++ b/src/frontend/fourier.c @@ -50,6 +50,10 @@ fourier(wordlist *wl, struct plot *current_plot) int shift; int rv = 1; + char newvecname[32]; + struct dvec *n; + int newveccount = 0; + if (!current_plot) return 1; @@ -183,9 +187,33 @@ fourier(wordlist *wl, struct plot *current_plot) tfree(pnumnp); } fputs("\n", cp_out); + /* generate name for new vector, using vec->name */ - /* generate vector of size 3 * nfreqs in current plot */ - /* store data in vector freq, mag, phase */ + sprintf(newvecname, "fourier_%d", newveccount); + + /* create and assign a new vector n */ + /* with size 3 * nfreqs in current plot */ + n = alloc(struct dvec); + ZERO(n, struct dvec); + n->v_name = copy(newvecname); + n->v_type = 0; + n->v_flags = (1 | VF_PERMANENT); + n->v_length = 3 * nfreqs; + n->v_numdims = 2; + n->v_dims[0] = 3; + n->v_dims[1] = nfreqs; + + n->v_realdata = TMALLOC(double, n->v_length); + + vec_new(n); + + /* store data in vector: freq, mag, phase */ + for (i = 0; i < nfreqs; i++) { + n->v_realdata[i] = freq[i]; + n->v_realdata[i + nfreqs] = mag[i]; + n->v_realdata[i + 2 * nfreqs] = phase[i]; + } + newveccount++; if (polydegree) { tfree(timescale);