interpolateHRTF always trows warnings or errors when using either methods
Mostra commenti meno recenti
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!
Risposte (1)
Jimmy Lapierre
il 30 Mar 2020
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 Commenti
Davi Carvalho
il 30 Mar 2020
Modificato: Davi Carvalho
il 9 Apr 2020
Davi Carvalho
il 3 Apr 2020
Jimmy Lapierre
il 3 Apr 2020
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
il 3 Apr 2020
Modificato: Davi Carvalho
il 3 Apr 2020
Jimmy Lapierre
il 3 Apr 2020
Modificato: Jimmy Lapierre
il 3 Apr 2020
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
il 3 Apr 2020
Categorie
Scopri di più su Calendar in Centro assistenza e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!