interpolateHRTF always trows warnings or errors when using either methods
显示 更早的评论
I am trying to interpolate positions from the ARI database to the CIPIC database, but when I use the 'bilinear' mode the functions can't find the correct B position and trows an error.
However when I try to use the 'vbap' mode I ALWAYS get "Warning: Matrix is close to singular or badly scaled.
Results may be inaccurate." no matter the objective positions specified. What should I do? Please someone send help!
回答(1 个)
Jimmy Lapierre
2020-3-30
Can I ask what version of Matlab you are using?
If you can provide some sample code, it might also help. Does the help example work correctly on your machine? If so, does this also work afterwards?
interpolatedIRVBAP = interpolateHRTF(hrtfData,sourcePosition,desiredPosition,'Algorithm','VBAP');
6 个评论
Davi Carvalho
2020-3-30
编辑:Davi Carvalho
2020-4-9
Davi Carvalho
2020-4-3
Jimmy Lapierre
2020-4-3
Your usage is correct.
For Bilinear, it appears that the CIPIC database did not take measurements on the kind of grid layout required for the bilinear method to find the 3 points it needs. I inverted the two databases here and this works:
des_pos = CIPIC.SourcePosition;
inpt_pos = D3A.SourcePosition;
IR_cip_d3a = interpolateHRTF(D3A.Data.IR, inpt_pos(:,[1,2]), des_pos(:,[1,2]), ...
'Algorithm','bilinear' );
I will have to dive deaper to see if the bilinear method could be enhanced to work with this different grid layout.
For VBAP, there is a numerical warning when the azimuths are 99.x or 260.x (360-99.x). This will be fixed ASAP. In the meantime I'll just say p*pinv(a) can sometimes be an alternative to p/a. Hope that helps :)
Davi Carvalho
2020-4-3
编辑:Davi Carvalho
2020-4-3
Jimmy Lapierre
2020-4-3
编辑:Jimmy Lapierre
2020-4-3
Thank you for that suggestion. I looked into the method being implemented and it looks like that's where the limitation came from.
"It is assumed, without loss of generality, that the points A and B have the same elevation"
I'd hope to keep A as the closest point, but have the computation work even if B doesn't have the same elevation. Ideally we only need A, B and C to form a triangle around the destination point.
Davi Carvalho
2020-4-3
类别
在 帮助中心 和 File Exchange 中查找有关 Calendar 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!