2014-02-08 56 views
0

我試圖計算使用八度函數的導數的數值,但我不斷收到此錯誤:Octave中的「下標索引」錯誤,但沒有使用下標?

error: fp: subscript indices must be either positive integers or logicals

這個錯誤很奇怪,因爲我沒有在我的代碼中使用標指數的任何地方。下面是引發錯誤的功能fp

function [ dy ] = fp(f, x, ep) 
    dy = (f(x .+ ep) .- f(x)) ./ ep; 
end 

當我從Octave解釋運行功能的工作原理,但是當我嘗試使用文件fp.m調用的函數,我得到上述錯誤。這是我傳遞給它的功能:

function [ y ] = f(x) 
    y = (x .+ 2) .* x .+ 1; 
end 

我試着重新命名所有的變量在fp上,我曾在一個保留的變量名跌跌撞撞起飛的機會。任何其他想法?

+0

你有一個變量名爲fp某處在你的文件?一個文件指針可能? –

+0

@MadPhysicist我不知道。以上是我的兩個文件的所有內容,分別命名爲fp.m和f.m。我還沒有開始編寫main.m,因爲我想先讓它們工作。 : - \然而,我確實懷疑我是否曾經錯誤地命名了該文件,並暫時將其名稱更改爲衍生詞。 –

+0

你說你從文件中調用fp時會出錯。你可以請出示那個文件嗎? –

回答

1

Octave具有類似於C中的函數指針,除了它們被稱爲函數句柄。這裏是你如何調用該文件版本:如果您在"f"通過

fp(@f, -5, 1.0e-15); 

,它僅僅是一個字符數組。在這種情況下,fp中的表達式f(...)被解釋爲char數組中的索引表達式,因爲fp未看到函數句柄。如果你通過@f,這是一個指向fp可以直接調用的函數的指針。

+0

很高興爲你工作:) –

+0

我應該在三天前提出這個問題。非常感謝。谷歌一直沒有幫助。 –

+1

我可以看到。我會推薦搜索MathWorks的MATLAB文檔。它對我90%的MATLAB專業知識負責。其餘的只是知道如何將MATLAB轉換爲八度... –