演算法與程式設計 訊號初步處理

2021-06-09 07:21:24 字數 3002 閱讀 1984

這幾天做簡單的演算法題目,在學校發的教材裡面挑選了幾道稍微難一點的題目做了一下。花了一天時間做了出來。如此一來稍微找回了一點程式設計的感覺。

下面是題目:

下面是我的**:

#include #include typedef struct my_pluralplural;

#define pi 3.14159265354

void initx2(double x); //初始化一維訊號第一組

void inity1(double y[15]); //初始化二維訊號第一組

void inity3(double y[15]); //初始化二維訊號第一組

void eulerformula(double p, plural * mp); //尤拉公式

void onedimension(double x, plural y, int n); //一維訊號處理從實數空間到複數空間

void onedimensionreverse(plural x, int n); //一維訊號處理從複數空間到實數空間

void doubledimension(double x[15], plural y[15], int m, int n); //二維訊號處理從實數空間到複數空間

void doubledimensionreverse(plural x[15], int m, int n); //二維訊號處理從複數空間到實數空間

int main()

; plural x2[4];

onedimension(x1, x2, 4);

onedimensionreverse(x2, 4);

//一維訊號處理2

double x3[12];

plural x4[12];

initx2(x3);

onedimension(x3, x4, 12);

onedimensionreverse(x4, 12);

//二維訊號處理1

double y1[15][15];

plural y2[15][15];

inity1(y1);

doubledimension(y1, y2, 15, 15);

doubledimensionreverse(y2, 15, 15);

//二維訊號處理2

double y3[15][15];

plural y4[15][15];

inity1(y3);

doubledimension(y3, y4, 14, 12);

doubledimensionreverse(y4, 14, 12);

return 0;

}void initx2(double x2)

}void inity1(double y[15]) }}

void inity3(double y[15]) }}

void eulerformula(double p, plural * mp)

void onedimension(double x, plural y, int n)

y[k].rp = sum.rp;

y[k].vp = sum.vp;

printf("一維訊號公式正向結果x(%d)實部%.2lf, 虛部%.2lf\n", k, sum.rp, sum.vp);

} printf("\n");

}void onedimensionreverse(plural x, int n)

sum.rp /= n;

sum.vp /= n;

printf("一維訊號公式反向結果x(%d)實部%.2lf, 虛部%.2lf\n", k, sum.rp, sum.vp);

} printf("\n");

}void doubledimension(double x[15], plural y[15], int m, int n)

sita = 2 * pi / n * s * k * -1.0;

eulerformula(sita, &mp);

all[j].rp += sum[k].rp * mp.rp - sum[k].vp * mp.vp; //all裡面存放的是一維訊號計算出來的值

all[j].vp += sum[k].rp * mp.vp + sum[k].vp * mp.rp;

} y[s][j].rp = all[j].rp;

y[s][j].vp = all[j].vp;

printf("二維訊號公式正向結果x(%d, %d)實部%.2lf, 虛部%.2lf\n", s, j, all[j].rp, all[j].vp);

} }printf("\n");

}void doubledimensionreverse(plural x[15], int m, int n)

sita = 2 * pi / n * s * k * 1.0;

eulerformula(sita, &mp);

all[j].rp += sum[k].rp * mp.rp - sum[k].vp * mp.vp; //all裡面存放的是一維訊號計算出來的值

all[j].vp += sum[k].rp * mp.vp + sum[k].vp * mp.rp;

} all[j].rp = all[j].rp / m / n;

all[j].vp = all[j].vp / m / n;

printf("二維訊號公式反向結果x(%d, %d)實部%.2lf, 虛部%.2lf\n", s, j, all[j].rp, all[j].vp);

} }printf("\n");

}

程式設計與演算法 演算法 STL初步

標頭檔案 sortsort 陣列名 n,陣列名 m 能,m為整數 適用於基本型別 範圍為下標n到m 1,下標m不參與排序 自定義排序 struct rule sort a,a sizeof a rule 二分查詢 在排好序的陣列上進行二分查詢 等於的含義 a等於b 等價於a b 和a增,刪,查都能在...

LinuxNP 訊號與訊號處理函式

程序a向程序b傳送訊號 忽略 恢復某訊號 訊號是當作業系統中某些情況發生改變時,由作業系統向程序傳送,程序可對訊號進行捕捉並處理 程序缺省會對不同的訊號進行處理,使用者可通過自定義訊號處理函式並使用signal 將自定義的訊號處理函式與指定訊號進行繫結,訊號處理函式在訊號預設處理方式之前呼叫,原先處...

C 訊號處理程式設計風格規範

1.背景 c 做數字訊號處理很普遍,如何編寫高效穩定的 是c 程式設計師的一項必備技能,本文結合matlab做預言,c 做實現來談程式設計風格和習慣的問題。2.技術預言 做技術預言一般使用matlab,matlab是一種高度智慧型化的預言,它對變數的型別和運算會自動選擇相應的操作,演算法工程師不用去...