數學計算庫

2021-08-20 21:17:16 字數 3195 閱讀 9108

我的書:

京東購買鏈結

**購買鏈結

噹噹購買鏈結

寫演算法的實現,離不開各種矩陣以及線性代數的運算,包括矩陣求逆,矩陣分解,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 正...