Hot answers tagged

9

This comes from music terminology. The name "octave" comes from the fact that in the heptatonic musical scales (which are the prevalent scales in western music), the note with a 2:1 frequency ratio is the eighth note in the scale. For example, in the C major scale (C D E F G A B C) the eighth note is one octave above / has a 2:1 frequency ratio with the ...


4

I am afraid that it is rather impossible without a proper hardware. Sweep sine is ok as a general method, but you would either need: Reference transducer with known (preferably) linear frequency response. Then you can find the difference between those two. Signal actuator with known frequency response, and then you can also find the difference between ...


4

Frequency is the derivative of phase, so you need to start with the expression for frequency, which in your case is $f=200\exp(-\alpha*t)$ At time $t=0$ this will have the frequency of 200, but we need to solve for $\alpha$ so that the frequency at time $t=2$ is 20. Solving for $\alpha$ gives $\alpha=1.1513$. To get the correct expression for the phase you ...


4

Dynamic Time Warping is pretty well explained on this site. I'll use some of the diagrams from the PPT on that site to explain. The idea is to divide the signals into segments (frames) and then compare frames sequentially through each signal. As illustrated below, motion from a segment in one signal to the next segment depends on the similarity to the ...


3

-6 dB / octave is trivial. a common reference for a pinking filter is http://www.firstpr.com.au/dsp/pink-noise/


3

Don't know about GNU but in Matlab the frequency argument is specified relative to the Nyquist frequency (fs/2) and not the sample rate itself (fs). This makes the maxium legal argument for a relative cutoff frequency 1 (instead of 0.5). Your frequency argument should be [flo fhi]/fs*2.


3

Convolution and polynomial multiplication are equivalent by definition. Offsets are usually introduced through indexing. The treatment of ends is important.


3

My guess is that imshow, for some reason, has a lower color depth at which it displays greyscale images than your image viewer. The contours are actually just the quantization steps of the lower number of shades displayable.


3

Your image is an indexed image. Meaning it takes integer values that are supposed to be mapped to colours on screen via a particular colourmap. You can see this if you read your image in as: [I, M] = imread('dots_3gray.png'); where I becomes your 'indexed' image (which seems to contain indices from 0 to 158), and M is the colormap used to interpret it. ...


3

I simply use unwrapped atan2(IQ(i)) - atan2(IQ(i-1)) to estimate a discrete derivative, then low pass filter to below 15 kHz. Although with a shallow slope, the 1st order approximation to atan() given by Boschen will work just as well. Your noise might be due to not unwrapping the phase delta, or to not low pass filtering after doing the phase ...


2

Here a short example of how to deal with FFT in octave/matlab: function freq(npts, len, basefreq) x = [0 : npts - 1] / npts * len; y = sin(basefreq * x * 2 * pi); F = abs(fft(y)); half = npts / 2; F = F(1 : half); plot([0 : half - 1] / len, F); printf("Base frequency = %g\n", (find(F == max(F)) - 1) / len); endfunction try this ...


2

A helpful construction is that of a ,,convolution unit''. If you find a signal that, convolved by itself, stays identical, then you know a lot about how your convolution algorithm works. Note that while all discrete units (all ones surrounded by zeros) are convolution units, certain implementations might introduce padding or offsets so that the resulting ...


2

reference : Digital Image processing - Rafael Gonzalez Steps : The whole of filtering process can be summarized in the following points : 1> Given an input image f(x,y) of size M X N, obtain the padding parameters P and Q as P =2M and Q = 2N The problem with using DFT is that both the input and output images are periodic. This causes interference between ...


2

The firsts steps by Tzanetakis can be described as an Scheirer algorithm(Tempo and beat analysis of acoustic musical signals by Eric Sheirer), you can use DTW, filterbanks or FFT to split your signal in N subbands! I'll try to help you with what I did in the past, my steps are described below. I can show a simple example of 6(six) (200, 400, 800, 1600, ...


2

1) A Hilbert transform has a very very long impulse response (above some given noise floor), so you need a ton more data to manufacture an analytic signal, otherwise you won't have enough to span the width of the Hilbert impulse response filter without serious edge truncation effects. 2) Instantaneous frequency estimates from this type of artificially ...


2

Final step is pretty straightforward. All you need to do is to apply the Hilbert Transform to each IMF and extract the instantaneous frequency from analytical signal. Instantaneous frequency is given by: $$\omega(t)=\dfrac{d\phi(t)}{dt} $$ where $\phi(t)=\mathrm{arg}[x_a(t)]$ (unwrapped phase of the analytical signal). Keep in mind that MATLAB (Octave) ...


2

Yes, this code is correct for implementing a moving average filter. Nevertheless I do recommend to use the in-built smooth function in MATLAB. y = smooth(x, 100, 'moving')


2

You're trying to solve what's called Perona Malik Non Linear Diffusion Problem (Sometimes people call it, by mistake, Anisotropic Diffusion). Anyhow, the simplest code for that is Anisotropic Diffusion (Perona & Malik) on The MATLAB File Exchange. There is a more advanced (Anisotropic for real) algorithm in Fast Anisotropic Curvature Preserving ...


2

here's what to do for -3 dB/octave (what i remember from 1985): first take your 1/sqrt(f) magnitude function and inverse-warp that frequency response to what it will look like in the analog s-domain. instead of only a -3 dB/oct ramp (which is what you after BLT frequency warping) you have a -3 dB/oct ramp that starts to level out a little in the s-domain. ...


2

I think the solution is to use $\log_{10}(y)$ instead of $\log(y)$. log(y) in octave is the natural $\log$, but you want a log base $10$, which is log10(y). Confirming this: $20\log_{10}(0.5) = -6 \textrm{ dB/octave}$ $20\ln(0.5) = \frac{-13.86}{20} \textrm{ nepers/octave}$ I am using $\textrm{ln}$ for natural log to avoid any confusion.


2

The Frequency Response of a system is the Fourier Transform of the Impulse Response of the system. Since we're in the real world and we have finite number of samples observed over finite time interval we use the Discrete Fourier Transform (DFT). In Ocatve and MATLAB the DFT is implemented in efficient way using the Fast Fourier Transform (FFT). In order to ...


2

For the sake of completeness, here is my solution: fs = 44100; # sampling frequency y = wavread('i-rsp.wav'); # read wav file b = y(:, [1]); # use first channel for analysis figure(1); # plot the impulse response plot(b, 'marker', '*'); # ... [h, w] = freqz (b, 1, 512, fs); #...


2

It seems like it is a bug. Octave's wavwrite() function writes 32-bit wav in 32 bits int (type 1 format) instead of normalized 32-bit floats (type 3 format). Unfortunately, 1 can't be represented in 32-bit type 1 format which is why you get this result. The solution could be to use the audiowrite() function, or to write 0x7fffffff instead of 1. More about ...


2

Problem solved. Looks like calculation of Os ($\omega_s$) was the culprit for this problem. Proper equation is: Os=Om*sqrt((gm^2-g1^2)*(1-gm^2))/(1-gm^2); instead of: Os=Om*(sqrt((gm^2-g1^2)*(1-gm^2))/(1-gm^2));


2

You are essentially seeing a Cascade-Integrator-Comb (CIC) response which is identical to a moving average filter (Aliased Sinc function magnitude response) as seen with CIC filter structures. Consider what is happening in units of phase: You start with a white noise signal which is translated from magnitude directly to units of frequency in the FM ...


2

Is there any possibility to implement a speech recognition integrated with google voice that converts speechs in text in GNU Octave? Yes. The Google Cloud command line utility returns results in JSON. Octave is working on its JSON support, but until then you can use something like this. What we are missing now is triggering the whole process from within ...


2

Your code works fine. But for the sake of demonstration clarity, just get rid of all the fftshift functions and change your frequency range too. The main problem is that you should use FFT sizes when calling fft() functions, which by default uses signal length as FFT size which was the problem you faced on the following line : ### Energy Spectral Density ...


2

Fat32's answer is correct and shows a common pitfall. The reason that you must do this is because recall that the output of the autocorrelation of a signal of length $N$ is $2N - 1$. You were performing the FFT with the original sample size of $N = 1000$, effectively destroying necessary information to retrieve the autocorrelation of size $2N - 1 = 1999$.


1

A. Tanenbaum is credited with: The nice thing about standards is that you have so many to choose from Two main options, for PCM or other formats: 1) the reading is not fully adapted 2) the file is not fully compatible. You can try with other higher-level audio functions like described in 33.1 Audio File Utilities. And cross-check with hexadecimal ...


1

I hope I understand what your'e asking correctly To get the minimum slope of the image I would run an calculate the slope at each point (should be fast enough) and than take the minimal one. For example : x = 1:.05:3000; y = 100+x + 300*sin(2*pi*x/1000); origin = [0 0] ; % or origin = [ x(1) y(1) ]; slope = (y - origin(2)) ./ (x - origin(1)); [ minslope ,...


Only top voted, non community-wiki answers of a minimum length are eligible