2014-05-22 63 views
1

如果我有一個函數myFunction(x,y,z)Matlab的繪製多種功能

function myFunction = (x,y) 

for n=1:3 
    f = x+y^n+1; 
    plot(x,f) 
end 

我怎麼能調用這個函數在一個單獨的腳本文件中的一個圖形繪製的一切嗎?這不起作用:

hold on 

myFunction(3,2) 
myFunction(1,2) 
+0

您的'myFunction(x,y,z)'與您的示例不符。也許這是原因?是一個錯字? – Marcin

+1

你需要打開一個數字窗口,然後才能執行「hold on」。或者在2'myFunction'調用之間放置'hold on',或者在'hold on'之前執行'figure()'。 – David

回答

2

兩個可能的答案,

function f = myfunction(x,y,fig) 
if nargin<3; 
    fig = gcf; 
end 

isHold = ishold(gca(fig)); 
hold on 
n = 1:3; 
f = x+y^.n+1; 
plot(x,f,'o') % Or whatever marker you select 
if ~isHold 
    hold off; 
end 

如果你只是意味着你想在繪製過程中的for環一切點變得更簡單。

function f = myfunction(x,y) 
figure; 
n = 1:3; 
f = x+y^.n+1; 
plot(x,f,'o'); % Or whatever marker you select. 
% plot(x,f); % line plot 

然而,最簡單的解決方案是另一種解決方案。用匿名函數替換函數。

f = @(x,y,n) x+y^.n+1; 
figure; 
plot(x,f(x,y,1:3)); % Plot as a line plot 
% plot(x,f(x,y,1:3),'o'); % plot as markers