Combine 3 graphics into a single one

4 visualizzazioni (ultimi 30 giorni)
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.

Risposta accettata

Image Analyst
Image Analyst il 22 Gen 2017
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 Commenti
Philippe Girard
Philippe Girard il 22 Gen 2017
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 il 22 Gen 2017
But you said using global was a required part of the solution. Like they wanted/required you to use it. Anyway, thanks for accepting.

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su Creating, Deleting, and Querying Graphics Objects in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by