2015-09-30 483 views
2

我開始使用MATLAB,但我仍然不知道如何做很多事情。我要創建一個簡單的繪圖功能,讓我們supose是:MATLAB中的基本功能

f(x)=3x+1, defined for example from -5 < x < 5 

我需要做的是創建變換自變量(這是一個輸入參數)的功能。例如,如果我的功能被命名爲plotFunction,如果執行命令plotFunction(2x+3)最終繪製圖形的功能是:

f(x)=6x+10 
+1

我不明白'3x + 1','2x + 3'和'6x + 10'之間的關係,你能否澄清你如何得到這些表達式? –

+2

該函數的輸入參數被放置爲原始函數中的x。 f(x)= 3(2x + 3)+ 1 = 6x + 10 – David103

回答

4

功能可以由function環境來定義。你想要一個沒有輸出變量的函數,只是情節顯然。

function [] = plotFunction(f,minRange,maxRange) 
    range = minRange:0.01:maxRange; % Create plot range, change 0.01 to w/e precision you want to attain 
    figure; % Create figure 
    PlotFunc = 3.*f(range)+1; % Your function 
    plot(range,PlotFunc) 
end 

有你想使用其他功能爲「基函數」時需要知道兩件事情:我現在已經把它取的0.01這個步驟可能需要設定較小的(如繪製的時候[ - 1E-4,1e-4])。你可以手工做到這一點,或使用精確開關作爲@efirvida使用。另一件事:我叫3*f(range)+1PlotFunc。如果您想使用其他功能,請在此處執行操作如果你想使用cos(x)+1/3*sin(pi*x)*e^(-x))集中的所有xf(x)PlotFunc = cos(f(x))+1/3.*sin(pi.*f(x))*exp(-f(x)))

現在你必須照顧到調用x作爲function handle,像這樣:f = @(x)(2*x+3)@使它成爲一個函數句柄,它後面的參數定義了定義函數中的變量,這裏是(x)。第二組括號包含實際功能。然後定義範圍,即minRange = -5maxRange = 5和調用函數:

plotFunction(f,minRange,maxRange) 

導致:

enter image description here

+0

爲什麼'3 * f(範圍)+1而不僅僅是f(範圍)'。我編輯我的解決方案看起來像你的,是完全一樣的,但你傳遞函數,我傳遞一個字符串,並將其轉換爲函數,但感謝您刪除評論 – efirvida

+0

@efirvida,因爲OP基本上想要一個嵌套函數。查看已更新的答案 – Adriaan

+1

這是因爲作爲參數傳遞的函數必須包含在原函數的獨立變量(f(x)= 3x + 1)中。 Adriaan的解決方案完美地工作,你忘了這最後一步,但這個想法沒問題。謝謝你們的幫助。 – David103

2

我的解決方案

文件plotFunction.m

function plotFunction(f, lb, ub, precision) 
    f = str2func(['@(x) ', f]); 
    plot(lb:precision:ub, f(lb:precision:ub)) 
end 

其中f是函數字符串表示,和lbub結合的自變量的,並且precision情節

運行功能

>>> plotFunction('2*x+3', -5, 5, 0.01) 

enter image description here

>>> plotFunction('6*x+10 ', -5, 5, 0.01) 
的精度

enter image description here