2014-02-09 18 views
0

Matlab newb這裏。我已經搜查,沒有找到如何做到以下幾點:如何在Matlab中約束一個變量

x=0.1:1/100:10; 
y=exp(a(a>=-1&a<=1)*sqrt(x)); 
plot(x,y) 

我意識到,xa尺寸不匹配,但我只是想表達:「這是什麼y樣子時,常數,例如,a,約束在-1和1之間「。

任何提示表示讚賞。提前致謝。

+0

如果答案低於不幫忙,也許你可能會修改你的問題。在我看來,你想要探索exp(a * sqrt(x))的形狀,但我可能是錯的。如果是這樣,你想要一個y-x和a的三維圖,或者a如果是這樣,在什麼範圍應該有所不同? –

+0

我只是希望二維和「不同範圍的一個我有不同範圍的一個我是感興趣,但在我提供的例子中,我對-1 <= a <= 1感興趣。我意識到在Matlab中通常有多種方法來解決問題求解,所以如果你有更多的輸入,請,我想到了這裏吧,以後當我得到積分的時候,我可以在這裏重溫一下,下面的答案對我很有幫助, – Joe

回答

1

假設ax是獨立的,你可以沿着這些路線走,使用bsxfunax的所有組合計算y

x = 0.1:1/100:10; %// define x values 
a = linspace(-1,1,10); %// define a values 
y = exp(bsxfun(@times, a, sqrt(x).')); %'// compute y for all combinations 
plot(x,y); %// this plots each column of y. Each colum represents a value of a 

enter image description here

或情節作爲3D圖形(ya功能和x):

mesh(a,x,y) 
xlabel('a') 
ylabel('x') 
zlabel('y') 

enter image description here

+0

非常感謝Luis,在文檔中查看,感謝您的建議,我發現bsxfun是一個非常有用的功能。 – Joe

+0

@Joe幾個月前,我在StackOverflow中發現了'bsxfun',它絕對改變了我的想法(在Matlab中):-) –

+0

Luis Mendo,你碰巧知道一個標籤顯示附加值的方法給每個不同的y給定a的軌跡,即對於y的每一列? – Joe

1

你可以做如下:

x=0.1:1/100:10; % 991 clips 
a=-1:1/495:1;  % use 1/495 here to make it also 991 clips 
y=exp(a.*sqrt(x)); 
plot(x,y) 

這會給你如下圖:

enter image description here

+0

謝謝herohyongtao,另一個有幫助的建議,讚賞。 – Joe

+0

我們可以做a = -1:1/floor (長度(x)/ 2):1;%使用1/495這裏使它也991剪輯 – Joe

+0

我有種概括了這種模式爲我自己和其他任何人可能幫助:https://gist.github.com/anonymous/8904953 – Joe