2015-04-20 14 views
1

我試圖解決的聲波測距在這個環節中描述的問題:解決聲波測距功能與fsolve在Matlab

http://en.wikipedia.org/wiki/Sound_ranging#cite_note-old-5

我有一個MATLAB函數是這樣的:

function [f]=equation1(x) 
c = 330 ;%speed of sound meters per second 
% unknown variable : 
% r1 => x(1) 
% theta => x(2) 

time2 = 0.455; % Microphone 1 to Microphone 2 time delay 
time3 = 0.606; % Microphone 1 to Microphone 3 time delay 
% gives : 
r2 = 150 %time2*c; 
r3 = 200 %time3*c; 

r4 = 1267.9; % Distance from Microphone 2 to Microphone 3 
r5 = 499.1; % Distance from Microphone 1 to Microphone 3 

phi = 16.177; % Angle between Microphone 1 and Microphone 2 measured from Microphone 3 

f(1)= -(x(1) + r2)^2 + (x(1)+r3)^2 +r4^2 -2*(x(1)+r3)*r4*cosd(x(2)); 
f(2)= - x(1)^2 + (x(1)+r3)^2 + r5^2 - 2*(x(1)+r3)*r5*cosd(x(2)-phi); 
end 

當我運行[x,feval]=fsolve(@equation1,[100 10]),代碼返回結果x= 581.4332 -31.8492。但在例子r1是1621米。我在這個程序中看不到我的錯誤。

+1

您能否提供更多信息,您可以從文章的哪一部分獲得方程式? –

+0

就在圖2的下方:炮兵定位問題的例子。 [鏈接](http://upload.wikimedia.org/math/3/6/e/36e9d6ad890f0bead47e51aeeaface26.png)和[鏈接](http://upload.wikimedia.org/math/2/f/8/2f8762bc5e481fb11064e71ae6d6c47e巴紐) – user3646248

回答

2

你交換的r4r5的值,它應該是:

r4 = 499.1; % Distance from Microphone 2 to Microphone 3 
r5 = 1267.9; % Distance from Microphone 1 to Microphone 3 

而且,輸出控制檯返回是feval的價值,而不是x。隨着r4r5正確的價值觀,我顯示了正確的答案是這樣的:

[x,feval]=fsolve(@equation1,[100 10]); 
disp(x); 

預期其輸出

1.0e+03 * 

1.6230 0.0764