erf函数恒为零问题求助:星光学信号Alpha系数建模异常
恒星光信号Alpha系数计算异常问题
项目背景
我正在开展一项从恒星光线中提取光信号的项目,核心任务是建立Alpha系数分布的直方图模型。Alpha是决定每个像素有用信号占比的系数,当前处理的是7×7规模的像素阵列,单个像素大小为1,Alpha的计算公式如下:
异常情况
目前遇到两个问题:
- 代码中
erf函数的计算结果始终为0 - Matlab代码输出的数组与我手动计算的矩阵结果不匹配
我的Matlab代码
close all dz = 0.5; i_range = -3:1:3; j_range = -3:1:3; result_array = zeros(7,7); for i_idx = 1:numel(i_range) i = i_range(i_idx); for j_idx = 1:numel(j_range) j = j_range(j_idx); a = ((((i-1)/2)*erf(((i-1)*dz)/(sqrt(2))))-(i*erf((i*dz)/(sqrt(2))))+(((i+1)/2*erf(((i+1)*dz)/(sqrt(2))))+((1/(dz*(sqrt(2*pi))))*((exp(-(((i-1)^2)*(dz^2))/4))-(2*(exp((i^2)*(dz^2)/2)))+(exp(-(((j+1)^2)*(dz^2))/2)))))) * ((((j-1)/2)*erf(((j-1)*dz)/(sqrt(2))))-(j*erf((j*dz)/(sqrt(2))))+(((j+1)/2*erf(((j+1)*dz)/(sqrt(2))))+((1/(dz*(sqrt(2*pi))))*((exp(-(((j-1)^2)*(dz^2))/4))-(2*(exp((j^2)*(dz^2)/2)))+(exp(-(((j+1)^2)*(dz^2))/2)))))); result_array(i_idx, j_idx) = a; end end inverted_result_array = max(result_array(:)) - result_array; normalized_result_array = inverted_result_array - min(inverted_result_array(:)); normalized_result_array = normalized_result_array / max(normalized_result_array(:)); figure bar3(result_array); xlabel('i'); ylabel('j'); zlabel('a'); title(['dz = ', num2str(dz)]);
手动计算的矩阵结果

内容的提问来源于stack exchange,提问作者friendly neighbor
相关产品推荐
相关产品推荐

