導航:首頁 > 編程語言 > java傅里葉變換

java傅里葉變換

發布時間:2022-09-05 16:54:34

『壹』 求快速傅里葉變換的演算法實現,C/C++/java都行,要求適用於所有的整數,謝謝!

#include<graphics.h>
#include<stdio.h>
#include<math.h>
#include<conio.h>
#include<dos.h>

float ar[2048],ai[2048];
float a[4100];

void testdata()
{
int i;
for(i=0;i<512;i++)
{
ar[i]=50*cos(i*3.14159/32)+60*cos(i*3.14159/16)+53*cos(i*3.14159/64)+24*cos(i*3.14159/8)+10*cos(i*3.14159/128);
ai[i]=0;
}
}

void fft(int nn,int t)
{
int n1,n2,i,j,k,l,m,s,l1;
float t1,t2,x,y;
float w1,w2,u1,u2,z;
float pi=3.14159;
switch(nn)
{
case 2048: s=11; break;
case 1024: s=10; break;
case 512: s=9; break;
case 256: s=8; break;
}

n1=nn/2; n2=nn-1;
j=1;
for(i=1;i<=nn;i++)
{
a[2*i]=ar[i-1];
a[2*i+1]=ai[i-1];
}
for(l=1;l<n2;l++)
{
if(l<j)
{
t1=a[2*j];
t2=a[2*j+1];
a[2*j]=a[2*l];
a[2*j+1]=a[2*l+1];
a[2*l]=t1;
a[2*l+1]=t2;
}
k=n1;
while (k<j)
{
j=j-k;
k=k/2;
}
j=j+k;
}
for(i=1;i<=s;i++)
{
u1=1;
u2=0;
m=(1<<i);
k=m>>1;
w1=cos(pi/k);
w2=t*sin(pi/k);
for(j=1;j<=k;j++)
{
for(l=j;l<nn;l=l+m)
{
l1=l+k;
t1=a[2*l1]*u1-a[2*l1+1]*u2;
t2=a[2*l1]*u2+a[2*l1+1]*u1;
a[2*l1]=a[2*l]-t1;
a[2*l1+1]=a[2*l+1]-t2;
a[2*l]=a[2*l]+t1;
a[2*l+1]=a[2*l+1]+t2;
}
z=u1*w1-u2*w2;
u2=u1*w2+u2*w1;
u1=z;
}
}
for(i=1;i<=nn/2;i++)
{
ar[i]=a[2*i+2]/nn;
ai[i]=-a[2*i+3]/nn;
a[i]=4*sqrt(ar[i]*ar[i]+ai[i]*ai[i]);
}
}

int main ()
{
int i;
int gdriver=DETECT,gmode;
initgraph(&gdriver,&gmode,"");
setfillstyle(SOLID_FILL,WHITE);
bar(0,0,639,479);
//模擬測試數據
testdata();
//波形顯示
setcolor(BLACK);
line(10,119,550,119); // x軸
line(10,10,10,239); // y軸
setcolor(BLUE);
for(i=0;i<511;i++)
line(i+10,119-ar[i],i+10+1,119-ar[i+1]);
//FFT
fft(512,-1);

//頻譜顯示
setcolor(BLACK);
line(10,459,550,459); // x軸
line(10,259,10,459); // y軸
setcolor(RED);
for(i=0;i<256;i++)
line(2*i+10,459-a[i],2*i+10,459);
getch();
closegraph();
return 0;
}

『貳』 求傅里葉變換(DFT)Java源碼 圖像處理

您對於傅里葉變換恐怕並不十分理解

傅里葉變換的實質是將一個信號分離為無窮多多正弦/復指數信號的加成,也就是說,把信號變成正弦信號相加的形式——既然是無窮多個信號相加,那對於非周期信號來說,每個信號的加權應該都是零——但有密度上的差別,你可以對比概率論中的概率密度來思考一下——落到每一個點的概率都是無限小,但這些無限小是有差別的

所以,傅里葉變換之後,橫坐標即為分離出的正弦信號的頻率,縱坐標對應的是加權密度

對於周期信號來說,因為確實可以提取出某些頻率的正弦波成分,所以其加權不為零——在幅度譜上,表現為無限大——但這些無限大顯然是有區別的,所以我們用沖激函數表示

已經說過,傅里葉變換是把各種形式的信號用正弦信號表示,因此非正弦信號進行傅里葉變換,會得到與原信號頻率不同的成分——都是原信號頻率的整數倍。這些高頻信號是用來修飾頻率與原信號相同的正弦信號,使之趨近於原信號的。所以說,頻譜上頻率最低的一個峰(往往是幅度上最高的),就是原信號頻率。

傅里葉變換把信號由時域轉為頻域,因此把不同頻率的信號在時域上拼接起來進行傅里葉變換是沒有意義的——實際情況下,我們隔一段時間採集一次信號進行變換,才能體現出信號在頻域上隨時間的變化。

我的語言可能比較晦澀,但我已盡我所能向你講述我的一點理解——真心希望能對你有用。我已經很久沒在知道上回答過問題了,之所以回答這個問題,是因為我本人在學習傅里葉變換及拉普拉斯變換的過程中著實受益匪淺——它們幾乎改變了我對世界的認識。傅里葉變換值得你用心去理解——哪怕苦苦思索幾個月也是值得的——我當初也想過:只要會算題就行。但浙大校訓「求是」時時刻刻鞭策著我追求對理論的理解——最終經過很痛苦的一番思索才恍然大悟。建議你看一下我們信號與系統課程的教材:化學工業出版社的《信號與系統》,會有所幫助。

『叄』 求一個java版本的 把圖像傅里葉變換,及其逆變換的例子,先謝謝啦~ 如果能講一下原理就更好了~

圖像傅里葉變換,及其逆變換是什麼意思呢?

『肆』 傅里葉變換如何解決大整數乘法 希望能給出思路,最好能用JAVA語言描述一下,萬分感謝

用BigInteger

給你個例子

import java.math.BigInteger;

public class Admin {

public static void main(String... args) {
BigInteger a = BigInteger.valueOf(Long.MAX_VALUE);
BigInteger b = BigInteger.valueOf(Long.MAX_VALUE);

System.out.println(a);
System.out.println(b);

// 加
System.out.println(a.add(b));
// 減
System.out.println(a.subtract(b));
// 乘
System.out.println(a.multiply(b));
// 除
System.out.println(a.divide(b));
}
}

『伍』 java語言向指定的ip埠發語音,如何實現

伺服器端:最簡單的就是暴露一個http介面
使用servlet,用tomact部署
會有一個地址,假設是:192.168.1.2:8080
客戶端:那就應該是向上述地址發送語音了
具體:監聽音頻輸入源,使用傅里葉變換將語音轉換成數字信號
調用192.168.1.2:8080,將數字信號塞入request中,伺服器端就能收到了

『陸』 將已有的時域點進行傅里葉變換成頻域求能運行的實用java代碼,不要網上抄的名詞解釋

你那一句話里, 三個字都我都看不懂,
時域點,
傅里葉變換
頻域
這種專業的數學計算,一般不會用java語言,網上抄不來的。不知道你的那個行業是什麼。你可以去搜索下,java是否有專門針對這個行業的架包,有的話,你就去學下架包的使用方法。要不你可以去找下別的語言,MATLAB 或者 R語言。我知道的跟數據計算密切點,就這兩種語言。

『柒』 對圖像進行傅里葉變換用什麼軟體

用MATLAB!

MATLAB是美國MathWorks公司出品的商業數學軟體,用於演算法開發、數據可視化、數據分析以及數值計算的高級技術計算語言和互動式環境,主要包括MATLAB和Simulink兩大部分。
MATLAB是matrix&laboratory兩個詞的組合,意為矩陣工廠(矩陣實驗室)。是由美國mathworks公司發布的主要面對科學計算、可視化以及互動式程序設計的高科技計算環境。它將數值分析、矩陣計算、科學數據可視化以及非線性動態系統的建模和模擬等諸多強大功能集成在一個易於使用的視窗環境中,為科學研究、工程設計以及必須進行有效數值計算的眾多科學領域提供了一種全面的解決方案,並在很大程度上擺脫了傳統非互動式程序設計語言(如C、Fortran)的編輯模式,代表了當今國際科學計算軟體的先進水平。
MATLAB和Mathematica、Maple並稱為三大數學軟體。它在數學類科技應用軟體中在數值計算方面首屈一指。MATLAB可以進行矩陣運算、繪制函數和數據、實現演算法、創建用戶界面、連接其他編程語言的程序等,主要應用於工程計算、控制設計、信號處理與通訊、圖像處理、信號檢測、金融建模設計與分析等領域。
MATLAB的基本數據單位是矩陣,它的指令表達式與數學、工程中常用的形式十分相似,故用MATLAB來解算問題要比用C,FORTRAN等語言完成相同的事情簡捷得多,並且MATLAB也吸收了像Maple等軟體的優點,使MATLAB成為一個強大的數學軟體。在新的版本中也加入了對C,FORTRAN,C++,JAVA的支持。

做二維傅里葉變換,用matlab直接把圖像讀進去然後用fft2函數變換就行了。

『捌』 java有沒有傅里葉變換的jar包

單例模式(Singleton Pattern):單例模式確保某一個類只有一個實例,而且自行實例化並向整個系統提供這個實例,這個類稱為單例類,它提供全局訪問的方法。
單例模式的要點有三個:一是某個類只能有一個實例;二是它必須自行創建這個實例;三是它必須自行向整個系統提供這個實例。單例模式是一種對象創建型模式。單例模式又名單件模式或單態模式。

『玖』 java fft為什麼要重新排序

傅里葉變換好久沒用過來,快忘完了,給你個連接你自己看看http://www.cnblogs.com/yangzhenyu/archive/2012/03/22/java.html

『拾』 如何用快速傅里葉變換解決大數相乘問題,希望能給出思路,做一個JAVA的小程序,謝謝

同學,不好意思,我在上知道學堂,幫不了你。

閱讀全文

與java傅里葉變換相關的資料

熱點內容
體重小本app怎麼樣 瀏覽:777
編程語言需求 瀏覽:935
當兵體重怎麼個演算法 瀏覽:169
加密的電腦文件帶出去怎麼打開 瀏覽:849
死循環會在編譯的時候出錯嗎 瀏覽:986
c51單片機特殊寄存器的原理 瀏覽:578
閃耀永恆特利加密鑰 瀏覽:761
如何誇程序員 瀏覽:779
天津期貨python招聘 瀏覽:265
單片機機器語言寫的程序 瀏覽:553
韓國直播軟體app叫什麼名 瀏覽:920
軍營訓練不聽教官的命令 瀏覽:263
v開頭的音樂播放器是什麼APP 瀏覽:121
單片機是怎麼做出來的 瀏覽:318
博圖怎麼作為opc伺服器 瀏覽:102
編譯做題軟體 瀏覽:298
橋梁檢測pdf 瀏覽:689
化解壓力的一種方法 瀏覽:684
路由器和DSN伺服器有什麼區別 瀏覽:551
android伸縮控制項 瀏覽:861