91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

資源簡介

matlab filtfilt函數C語言實現,程序可直接運行驗證,同時包含matlab驗證程序

資源截圖

代碼片段和文件信息

#include?
#include?
#include?
#include?

/*濾波總體流程:
1、確定延時系數zi
2、對數據進行鏡像,消除邊緣效應
3、正向濾波,反向濾波
4、將數據從濾波后的數據中截取出來*/

//filter函數
void?filter(const?float*?x?float*?y?int?xlen?float*?a?float*?b?int?nfilt?float*?zi)//nfilt為系數數組長度,zi為延時系數
{
#define?EPS?0.000001
float?tmp;
int?i?j;


//判斷a[0]是否為1,若不是,歸一化下
if?((*a?-?1.0?>?EPS)?||?(*a?-?1.0? {
tmp?=?*a;
for?(i?=?0;?i? {
b[i]?/=?tmp;
a[i]?/=?tmp;
}
}


memset(y?0?xlen?*?sizeof(float));//將y清零,以雙浮點為單位

????//此處賦值a[0]=0可以直接一步循環到位,不需要講b[0]*x[0]單獨計算
a[0]?=?0.0;
for?(i?=?0;?i? {
for?(j?=?0;?i?>=?j?&&?j? {
y[i]?+=?(b[j]?*?x[i?-?j]?-?a[j]?*?y[i?-?j]);
}
//若濾波器階數大于2,需加上延時系數
if?(zi&&i? }
a[0]?=?1.0;//還原濾波系數
}




//矩陣乘法?m為a的行數,n為a的列數數,k為b的行數,第一個矩陣列數必須要和第二個矩陣的行數相同,輸出結果存放在c中
void?trmul(float?*a?float?*b?float?*c?int?m?int?n?int?k)
{
int?i?j?l?u;
for?(i?=?0;?i?<=?m?-?1;?i++)
for?(j?=?0;?j?<=?k?-?1;?j++)
{
u?=?i?*?k?+?j;?c[u]?=?0.0;
for?(l?=?0;?l?<=?n?-?1;?l++)
c[u]?=?c[u]?+?a[i*n?+?l]?*?b[l*k?+?j];
}
return;
}


//求逆矩陣,當返回值為0時成功,a變為逆矩陣
int?rinv(float?*a?int?n)//逆矩陣
{
int?*is?*js?i?j?k?l?u?v;
float?d?p;
is?=?(int?*)malloc(n?*?sizeof(int));
js?=?(int?*)malloc(n?*?sizeof(int));
for?(k?=?0;?k?<=?n?-?1;?k++)
{
d?=?0.0;
for?(i?=?k;?i?<=?n?-?1;?i++)
for?(j?=?k;?j?<=?n?-?1;?j++)
{
l?=?i?*?n?+?j;?p?=?fabs(a[l]);
if?(p?>?d)?{?d?=?p;?is[k]?=?i;?js[k]?=?j;?}
}
if?(is[k]?!=?k)
for?(j?=?0;?j?<=?n?-?1;?j++)
{
u?=?k?*?n?+?j;?v?=?is[k]?*?n?+?j;
p?=?a[u];?a[u]?=?a[v];?a[v]?=?p;
}
if?(js[k]?!=?k)
for?(i?=?0;?i?<=?n?-?1;?i++)
{
u?=?i?*?n?+?k;?v?=?i?*?n?+?js[k];
p?=?a[u];?a[u]?=?a[v];?a[v]?=?p;
}
l?=?k?*?n?+?k;
a[l]?=?1.0?/?a[l];
for?(j?=?0;?j?<=?n?-?1;?j++)
if?(j?!=?k)
{
u?=?k?*?n?+?j;?a[u]?=?a[u]?*?a[l];
}
for?(i?=?0;?i?<=?n?-?1;?i++)
if?(i?!=?k)
for?(j?=?0;?j?<=?n?-?1;?j++)
if?(j?!=?k)
{
u?=?i?*?n?+?j;
a[u]?=?a[u]?-?a[i*n?+?k]?*?a[k*n?+?j];
}
for?(i?=?0;?i?<=?n?-?1;?i++)
if?(i?!=?k)
{
u?=?i?*?n?+?k;?a[u]?=?-a[u]?*?a[l];
}
}
for?(k?=?n?-?1;?k?>=?0;?k--)
{
if?(js[k]?!=?k)
for?(j?=?0;?j?<=?n?-?1;?j++)
{
u?=?k?*?n?+?j;?v?=?js[k]?*?n?+?j;
p?=?a[u];?a[u]?=?a[v];?a[v]?=?p;
}
if?(is[k]?!=?k)
for?(i?=?0;?i?<=?n?-?1;?i++)
{
u?=?i?*?n?+?k;?v

評論

共有 條評論