本文解决的问题为:将输入矩阵进行自定义等间隔的离散化赋值。
Fouction Code
% 作者:ZQJ
% 日期:2022.2.26 星期六
%*********************** 将输入矩阵自定义等间隔离散区间进行离散化赋值 **************************
function E_out = f_Trans_DiscreteValue(E_in,Initial_value,End_value,counts)
% E_in:输入矩阵
% Initial_value:输出离散矩阵的采样值下限
% End_value:输出离散矩阵的采样值上限
% counts:输出离散采样点数
[xnums,ynums] = size(E_in);
E_out = (E_in-min(min(E_in)))/(max(max(E_in))-min(min(E_in))); % 将输入矩阵归一取值[0,1]区间
Sample_array = 0 : 1/counts : 1; % 采样矩阵(离散,比目标多一个)
Assign_array = Initial_value : (End_value-Initial_value)/counts : End_value-(End_value-Initial_value)/counts; % 赋值矩阵(离散)
for nx = 1:xnums
for ny = 1:ynums
if E_out(nx,ny) == 1
E_out(nx,ny) = Assign_array(counts);
continue;
else
for ni = 1:counts
if (E_out(nx,ny)-Sample_array(ni) >= 0) && (Sample_array(ni+1)-E_out(nx,ny)>0)
E_out(nx,ny) = Assign_array(ni);
break;
end
end
end
end
end
end
仿真结果图:
专栏内容供作者本人或大家学习使用,多多指教 ~
|