我的書:
京東購買鏈結
**購買鏈結
噹噹購買鏈結
寫演算法的實現,離不開各種矩陣以及線性代數的運算,包括矩陣求逆,矩陣分解,svd以及特徵值,特徵向量等;
music方法使用特徵空間法估計訊號(自關矩陣)的成分。自相關矩陣的特徵值對應的不同特徵向量是正交的(現在的深度學習方法也是在找若干組正交基的過程)。特徵值最大的對應於該訊號在該特徵向量上的投影值比較大,也就是包含的資訊量要比其它特徵向量空間中的大,這在資料壓縮領域有應用。
使用gsl實現music演算法的實現**片段如下:
#include
#include
#include "m_pd.h"
#include
#include
#include
#include
#include
#include
#define noofiterations 1000
/* music~ : music-code for music algorithm
commands for compiling with gcc:
> gcc -wall -c music~.c
> ld -export-dynamic -shared -o music~.pd_linux music.o -lc -lm -lgsl -lgslcblas
*//* ------------------------ music~ ----------------------------- */
static t_class *music_tilde_class;
typedef struct _music_tilde
t_music_tilde;
//function for calculating the array response, which is stored in x->x_a matrix
static void array_response(t_music_tilde *x, double angle)
else }}
static t_int *music_tilde_perform(t_int *w)
;int n = (int)(w[18]);
int i, j, p, nosources;
int m=0; //actual sample from 0 to n-1
double f1, f2, theta_rad;
gsl_matrix_complex_view nvec;
gsl_vector *mdl = gsl_vector_alloc(8);
const gsl_complex alpha = gsl_complex_rect((1/noofiterations), (1/noofiterations));
const gsl_complex beta = gsl_complex_rect(0, 0);
while (n--)
f2=f2/(p-i);
gsl_vector_set(mdl, i, (-log(pow((f1/f2), ((p-i)*noofiterations)))+0.5*i*(2*p-i)*noofiterations));
}nosources = gsl_vector_min_index(mdl);
//building nvec matrix
nvec = gsl_matrix_complex_submatrix(x->x_evec, 0, 0, 8, (p-nosources));
x->x_c = gsl_matrix_complex_alloc(1, (p-nosources));
//estimating the pmu function
j=0;
for (i=-90; i<=90; i++)
//reset the temporary variables
gsl_matrix_complex_set_zero(x->x_cov);
x->x_count = 0;
}// aranging 16 inputs to a 8x1 complex matrix
for (i=0; i<8; i++)
// estimating the covariance matrix from 8 complex input signals
gsl_blas_zgemm(cblasnotrans, cblasconjtrans, alpha, x->x_cmin, x->x_cmin, alpha, x->x_cov);
// increment counters
m++;
x->x_count++;
}return (w+19);
}static void music_tilde_dsp(t_music_tilde *x, t_signal **sp)
static void *music_tilde_new()
x->x_outlet_value = outlet_new(&x->x_obj, &s_float);
x->x_outlet_index = outlet_new(&x->x_obj, &s_float);
//allocating memory
x->x_cmin = gsl_matrix_complex_alloc(8, 1);
x->x_cov = gsl_matrix_complex_calloc(8, 8);
x->x_eval = gsl_vector_alloc(8);
x->x_evec = gsl_matrix_complex_alloc(8, 8);
x->x_a = gsl_matrix_complex_alloc(8, 1);
x->x_c2 = gsl_matrix_complex_alloc(1, 1);
x->x_w = gsl_eigen_hermv_alloc(8);
x->x_count = 0;
return (x);
}static void music_tilde_free(t_music_tilde *x) //destructor for deallocating memory
void music_tilde_setup(void)
```
開源幾何計算數學庫
a geos geos的全稱就是geometry engine open source,參考 就是 從名稱就可以看出,geos就是判斷幾何體的過程。geos是用c 語言寫的處理計算幾何的開源庫。b cgal cgal的全稱就是computational geometry algorithms lib...
python 數學計算
加法 減法 乘法 冪次 除法 取整,商的整數部分 取餘 位與 位或 位異或 位翻轉 x x 1 左移 右移 3 5 加法 8 10 6 減法 4 3 4 乘法 12 2 5 冪次 2的5次方 32 10 6 除法 1.6666666666666667 10 6 取整,商的整數部分 1 10 6 取餘...
Shell 數學計算
shell中的賦值和操作預設都是字串處理,在此記下shell中進行數 算的幾個特殊方法,以後用到的時候可以來看,呵呵 1 錯誤方法舉例 a var 1 1 echo var 輸出的結果是1 1,悲劇,呵呵 b var 1 var var 1 echo var 輸出結果是1 1,依然悲劇,呵呵 2 正...