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!