why do I get this error in the simulation

7 次查看(过去 30 天)
I'm doing a reactor simulation and it's a long one and it works but now when I add some changes I got this error
Error using griddedInterpolant
The grid vectors must contain unique points.
Error in interp1 (line 161)
F = griddedInterpolant(X,V,method);
Error in reactor_simulation>cross (line 431)
Sig_s_tot_O16_interp = interp1(oxygen_energy_tot, oxygen_cross_tot, e, 'linear');
Error in reactor_simulation>dist2c (line 505)
value = - log ( u ) / cross ( e );
Error in reactor_simulation (line 215)
[ d, seed ] = dist2c ( e, seed );
as I understand that the error because the data file I use does not has a unique points (the energy) so I used this code to found the simller points and I change them to became unique
for i=1:max(size(oxygen_data_tot))-1
if(oxygen_data_tot(i,1)==oxygen_data_tot(i+1))
i=i
end
end
but the problem is that I got the same error again after changing all the poin, so can you help me to know whats the problem to solve it?

采纳的回答

Torsten
Torsten 2023-3-23
编辑:Torsten 2023-3-23
Before calling "interp1", use
% Sort array oxygen_energy_tot in ascending order
[oxygen_energy_tot_sorted,idx_sort] = sort(oxygen_energy_tot);
oxygen_cross_tot_sorted = oxygen_cross_tot(idx_sorted);
% Delete duplicate values of oxygen_energy_tot
[oxygen_energy_tot,idx_unique] = unique(oxygen_energy_tot_sorted);
oxygen_cross_tot = oxygen_cross_tot_sorted(idx_unique);
  3 个评论
Torsten
Torsten 2023-3-24
Use
[oxygen_energy_tot_sorted,idx_sorted] = sort(oxygen_energy_tot);
instead of
[oxygen_energy_tot_sorted,idx_sort] = sort(oxygen_energy_tot);

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Interpolation 的更多信息

产品


版本

R2016b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by