簡體   English   中英

Matlab 3D圖自定義功能

[英]Matlab 3d plot custom function

我是Matlab的新手,但遇到了這個問題:我有一個函數,將3個double作為參數並輸出一個double,例如:

function l = myFunct(a,b,c)
    l = a^2*b^2 + (2*(c^2 - b) / (a - sqrt(c)))
end

現在,我需要繪制此函數在時間間隔上的結果:a = b = [0.1,3],同時保持c = 2。

我設法對單個變量的2d圖進行了此操作,但對3d卻沒有做到...

R = 0:0.01:2;
fun = @(x) myFunct(0.2, x, 3);
B = arrayfun(fun,R);
plot(R, B);

您能幫忙解釋一下嗎?

您確實可以使用meshgridndgrid來創建兩個網格陣列。 AB 然后,如果函數未向量化,則需要遍歷AB的條目。 要同時循環兩者,可以使用arrayfun 最后,您可以使用surfimagesc進行繪制。

[A,B] = ndgrid(1.4:0.0001:1.44, -1:.01:3);
Z = arrayfun(@(a,b) myFunct(a,b,2), A, B);
surf(A,B,Z,'edgecolor','none')

在此處輸入圖片說明

我終於解決了:

V = 2;

[X,Y] = meshgrid(0.1:0.1:3);
Z = myFunct(X,Y,X*0+V);

figure
surf(X,Y,Z);

謝謝大家的答復。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM