Matlab:一维或二维狄拉克(Dirac)产生函数

本文解决的问题为:基于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自定义)
    在这里插入图片描述

专栏内容供作者本人或大家学习使用,多多指教 ~

  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值