我有兩個數據集在不同的日子獲得。我從兩個不同的數據集中得到的結果具有相似的形狀但不同的值(參見圖1)。我試圖通過將x和B中的常數乘以第二個數據(見圖2)的第二個數據集(x2,y2)與第一個數據集(x1,y1)匹配。 如何找出縮放因子以匹配matlab中的兩條曲線?
例如:
DATA1:
X1 = [ - 0.3:0.06:2.1]';
Y1 = [0.001 0.001 0.004 0.014 0.052 0.166 0.330 0.416 0.340 0.247 0.194 0.197 0.237 0.330 0.428 0.542 0.669 0.767 0.855 0.900 0.913 0.904 0.873 0.811 0.765 0.694 0.631 0.585 0.514 0.449 0.398 0.351 0.309 0.273 0.233 0.211 0.182 0.154 0.137 0.117 0.101 ]';
data2
x2 = [ - 0.3:0.06:2.1]';
Y2 = [0.000 0.000 0.000 0.000 0.025 0.230 0.447 0.425 0.269 0.194 0.225 0.326 0.477 0.636 0.791 0.931 1.036 1.104 1.117 1.123 1.062 0.980 0.897 0.780 0.675 0.571 0.471 0.390 0.309 0.258 0.209 0.161 0.129 0.099 0.079 0.063 0.047 0.038 0.027 0.023 。015 ]';
要找出縮放因子一個 & 乙,我想通過減少數據1和X修改數據2之間的增量Y獲得乙。然而,我有一個好辦法,找出答:我應該如何找出一個 & 乙匹配這兩曲線?任何幫助是極大的讚賞。
@ jonnat:這適用於我發佈的數據集。但我有一個問題,當你使用fminunuc時,你如何確定最小範圍([1,1])?當我使用其他數據集進行測試時,它顯示錯誤消息爲「???在28使用==錯誤,輸入到ROOTS不得包含NaN或Inf。」你知道這可能是什麼原因嗎?謝謝你的幫助。 – tytamu 2012-02-03 16:25:29
此錯誤表示您的代碼中的操作生成NaN或Inf而不是有限數字。有很多原因,這可能是,包括無限制的目標函數'fminunc'或簡單的錯誤,例如除以0師如果你想界限添加到您的係數,使用'的fmincon'代替'fminunc'。如果您想確切知道NaN或Inf的生成位置,請在代碼的開頭使用'dbstop if naninf'。如果您仍然無法找到問題,請打開一個新問題。最後,如果我的答案適用於您的示例,請接受它,以便其他人知道它的工作原理。 – foglerit 2012-02-05 06:02:38