基於Matlab的核能譜資料處理 1

2021-10-09 09:50:24 字數 2223 閱讀 9388

在核物理實驗中,常通過 γ 能譜分析來確定放射性核素能量及活度,即對核素做出定性和定量分析 是一種比較直觀的探測分析技術,它在核物理研究原子能各種應用領域 核防護環境放射性研究等方面都發揮了巨大的作用。

應用 matlab 進行軟體的設計與研發可以充分發揮出其強大的數值分析及矩陣計算等功能,且可以讓使用者使用更加方便直接。本次主要針對三個方面(也是能譜分析最基本的方面)進行matlab指令編寫。

%

% 選擇路徑,畫出能譜

[filename,pathname]

=uigetfile

('*.txt'

,'匯入能譜資料');

%用於可以選擇乙個將要開啟的檔名,格式為txt。

file=

fullfile

(pathname,filename)

;%利用檔案各部分資訊建立並合成完整檔名

counts=

importdata

(file)

;%匯入資料

datelength=

length

(counts)

;%矩陣的最大陣列維度的長度道數

channel=

1:datelength;

%道址figure(1

);plot

(channel,counts,

'b.');

%畫能譜

xlabel

('channel');

ylabel

('counts');

title()

;

%

% 能量刻度

h1=input

('能量刻度:請輸入道址1:');

e1=input

('能量刻度:請輸入道址1對應的能量(kev):');

h2=input

('能量刻度:請輸入道址2:');

e2=input

('能量刻度:請輸入道址2對應的能量(kev):');

k=(e2-e1)

/(h2-h1)

; b=e1-k*h1;

h_scale=k*channel+b;

%刻度曲線

figure(2

);plot

(h_scale,counts,

'b.');

%畫刻度後的能譜

xlabel

('energy/kev');

ylabel

('counts');

title

('能譜圖(刻度後)'

);

%

% 計算能量解析度

%目前只能計算輸入道址時能量解析度,而不能計算輸入能量,且區間內不能有計數為0,否則會報錯,所以要找到平滑能譜的辦法。

peak_left=

input

('請輸入峰的起始位置:');

peak_right=

input

('請輸入峰的結束位置:');

%從能譜中取峰

channel=

channel

(peak_left:peak_right)

;counts=

counts

(peak_left:peak_right)';

%轉置lny1=

log(counts)

;%以e、2或者是10為底的對數的話,直接輸入:y=log(x),y=log2(x),y=log10(x)

%高斯公式 y 軸取對數座標,變成二次函式擬合

p1=polyfit

(channel,lny1,2)

;%陣列的方式輸入。輸出引數a為擬合多項式 y=a1x^n+..

.+anx+a,共n+

1個係數。

mean=-p1

(2)/

(p1(1

)*2)

;%峰位中心道址

sigma1=

sqrt(-

1/2/

p1(1)

); fwhm=

2.355

*sigma1;

%半高寬

energy_resolution=fwhm/mean;

%計算能量解析度

fprintf

('能量解析度為%.3f\n'

,energy_resolution)

;

核能譜測量軟體的需求分析與總體設計

核能譜測量就是對各種核輻射粒子的能量分布情況的測量。硬體部分現在一般由多道能譜譜儀完成,然後把每一道的計數以及其他資訊傳輸給主機,主機接收到資料之後通過相關軟體可以以橫軸表示道址 縱軸表示計數或計數率的直角座標系來顯示譜圖,並儲存資料到儲存裝置上等。其中首先是裝有測量軟體的主機和儀器必須建立雙向通訊...

matlab的fft譜振幅

對應的是真實的單邊譜的振幅,這裡的真實值指的是訊號的幅度 如果除以n,則對應雙邊譜的振幅。其實,直接傅利葉變換對應的積分什麼也不用除,當然抽樣定理 要乘以抽樣的週期才是對應原函式的積分值。雙邊的幅度譜除以了取樣點數n,0.01頻率真實的譜分量為2 pi,下圖最高的為 2 pi 2,設定的引數 100...

matlab 中的資料維數過大的時候怎麼處理及技巧

在matlab中,當資料比較大時,運算起來就困難了,有時候還會out of memory 例如4000 4000的矩陣,要算矩陣乘法都比較吃力 此文會記錄我學到的一些解決辦法 1.將資料的儲存型別從double轉換成single 在matlab中double資料型別佔8個位元組,single型別佔4...