Combine 3 graphics into a single one

3 ビュー (過去 30 日間)
Philippe Girard
Philippe Girard 2017 年 1 月 22 日
コメント済み: Image Analyst 2017 年 1 月 22 日
Hi,
I'm trying to combine 3 graphics into a single one . First, here is my program
function graphique()
global x h f_vec i
h_vec=[0.015625,0.1,0.5];
x=linspace(0.1,2);
for i=1:3
h=h_vec(i);
f = F();
end
plot(x,f_vec)
end
function f=F()
global h x f_vec i
f= 1./(((1-x.^2).^2+h.*x.^2).^(1/2));
f_vec(i)=f;
end
I was expecting that matlab will starts with the first iteration with i=1, associate a value h=0.015625 and call the function f=F(). He calculates f into the second block with the big equation and associate all the values of f to f_vec(1) then come back to the loop "for" with i=2... After doing all 3 iterations, he would get out of the loop and plot a vector f_vec in function of x. But I get an error with f=F() because it seems like having this variable into another function his not for him consider as using it.
Anyway the goal is to get a single window combining 3 graphs. I need help this program was mostly done by a user here and I'm still unable to finish it. Is there a way to use
f_vec
as a storage for all values of the 3 iterations.

採用された回答

Image Analyst
Image Analyst 2017 年 1 月 22 日
Why can't you just take the two lines from your function and put it into the loop.
function graphique()
global x h f_vec i
h_vec=[0.015625,0.1,0.5];
x=linspace(0.1, 2, length(j));
for i=1:3
h=h_vec(i);
f= 1./(((1-x.^2).^2+h.*x.^2).^(1/2));
f_vec(i)=f;
end
plot(x,f_vec)
end
Get rid of the F() function definition. Then you'll have just a single function that does everything your two functions used to do. Be sure to fix linspace() like I did so that it has the same number of elements as h.
  4 件のコメント
Philippe Girard
Philippe Girard 2017 年 1 月 22 日
This is exactly the result that I needed:
function test7
lambda=[0.015625,0.1,0.5];
x=linspace(0.1,2);
equation(x,lambda);
end
function equation(x,lambda)
for k=1:3
f = 1 ./ (((1-x.^2).^2 + lambda(k).*x.^2) .^ (1/2));
plot(x,f);
hold on
end
grid on
end
I didn't use global in this case because it was just to verify that I correctly understand how function works.
So this block
lambda=[0.015625,0.1,0.5];
x=linspace(0.1,2);
equation(x,lambda);
is sending information for further in the code. I thought it was the opposite that he asked for informations.
Now I only need to add labels and all that stuff. Your code learned me a ton of things thank you!
Image Analyst
Image Analyst 2017 年 1 月 22 日
But you said using global was a required part of the solution. Like they wanted/required you to use it. Anyway, thanks for accepting.

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeCreating, Deleting, and Querying Graphics Objects についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by