本文解决的问题为:基于matlab书写了一个狄拉克(Dirac)产生函数,提供了一维和二维的函数。同时,该函数也同时提供了阵列矩阵孔的产生方法。
Fouction Code
% 作者:ZQJ
% 日期:2022.4.25 星期一
%*********************** 狄拉克产生函数 **************************
function Dirac_function = f_Dirac_generation
Dirac_function.dirac_1D = @trans_0;
Dirac_function.dirac_2D = @trans_1;
end
function Dirac_1D_out = trans_0(array_N,sample_n,sample_length)
% 函数功能: 产生一维狄拉克函数矩阵(0-1)
% 所有输入变量均为单位数值
% array_N: 狄拉克矩阵的像素值(也即总长度)
% sample_n: 采样点数(这里舍去矩阵的两个端点)
% sample_length: 采样长度(准确应该是单像素长度)
% Dirac_1D_out: 一维狄拉克函数矩阵(行矩阵)
Dirac_1D_out = zeros(1,array_N);
sample_n_unit = round(array_N/(sample_n+1)); % 不考虑两边端点
sample_n_array = sample_n_unit: sample_n_unit: sample_n_unit*sample_n;
for Sam_n = 1:sample_n % 采样中心点
sample_length_start_n = sample_n_array(Sam_n) - floor(sample_length/2);
sample_length_array = sample_length_start_n : sample_length_start_n + sample_length;
for Samlenth_n = 1:sample_length % 采样中心长度
sample_n_now = sample_length_array(Samlenth_n);
Dirac_1D_out(sample_n_now) = 1;
end
end
end
function Dirac_2D_out = trans_1(array_Nx,array_Ny,sample_nx,sample_ny,sample_lengthx,sample_lengthy)
% 函数功能: 产生二维狄拉克函数矩阵(0-1)
% 所有输入变量均为单位数值
% array_Nx: x方向_狄拉克矩阵的像素值
% array_Ny: y方向_狄拉克矩阵的像素值
% sample_nx: x方向_采样点数(这里舍去矩阵的两个端点)
% sample_ny: y方向_采样点数
% sample_lengthx: x方向_采样长度(准确应该是单像素长度)
% sample_lengthy: y方向_采样长度
% Dirac_2D_out: 二维狄拉克函数矩阵
Dirac_1D_x = trans_0(array_Nx,sample_nx,sample_lengthx);
Dirac_1D_y = trans_0(array_Ny,sample_ny,sample_lengthy);
[Dirac_1D_X,Dirac_1D_Y] = meshgrid(Dirac_1D_y,Dirac_1D_x);
Dirac_2D_out = Dirac_1D_X & Dirac_1D_Y;
end
仿真结果图:
- 二维狄拉克阵列产生(sample_length = 1)
- 二维矩阵孔阵列产生(sample_length自定义)
专栏内容供作者本人或大家学习使用,多多指教 ~