
How can i give multiple input values in this function?
10 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Mirza Farrukh Baig
le 7 Déc 2018
Commenté : madhan ravi
le 7 Déc 2018
I have defined my function and I want to solve for P for multiple phi but it does not give me for different input values it soled for only one value.
I also tried to plot it but it does not give me any plot. Can anyone see my code and guide me it will be very helpfull for me. Thanks in advance.
Inuput values are (pi/6 , pi/3, pi/2, 2pi/3, 5pi/6, pi, 7pi/6, 4pi/3, 3pi/2, 5pi/3, 11pi/6).
function [P] = myfile(phi)
phi = [pi/6 pi/3 pi/2];
for i=1:length(phi)
A = 6*(0.8)*sin(phi);
B = 2+(0.8)*cos(phi);
C = 2+(0.8)^2;
D = (1+0.8*cos(phi)).^2;
P = (A.*B)/(C*D);
end
figure,plot(phi,P)
xlabel('Domain'),ylabel('Pressure'),
title('non-dimensional pressure'),
end
0 commentaires
Réponse acceptée
Image Analyst
le 7 Déc 2018
You did not include an index for P, so you just overwrite the same P every iteration. You should have done:
P(i) = (A.*B)/(C*D);
However, you can vectorize the code like this:
phi = [pi/6 , pi/3, pi/2, 2*pi/3, 5*pi/6, pi, 7*pi/6, 4*pi/3, 3*pi/2, 5*pi/3, 11*pi/6]
P = myfile(phi) % Call the myfile function
function P = myfile(phi)
A = 6*(0.8).*sin(phi);
B = 2+(0.8).*cos(phi);
C = 2+(0.8).^2 * ones(1, length(phi));
D = (1+0.8.*cos(phi)).^2;
P = (A.*B)./(C.*D);
figure
plot(phi,A, '*-', 'LineWidth', 2);
hold on;
plot(phi,B, '*-', 'LineWidth', 2);
plot(phi,C, '*-', 'LineWidth', 2);
plot(phi,D, '*-', 'LineWidth', 2);
plot(phi,P, '*-', 'LineWidth', 4);
xlabel('Domain');
ylabel('Pressure');
title('non-dimensional pressure');
legend('A', 'B', 'C', 'D', 'P');
grid on;
end

I'm showing the individual A, B, C, and D, just for interest. You just have to change the definition of C slightly. Vectorization is something you should learn as it's one of the most powerful features of modern languages.
Plus de réponses (1)
madhan ravi
le 7 Déc 2018
Modifié(e) : madhan ravi
le 7 Déc 2018
EDITED
Loop can be avoided:
Phi=pi/6:pi/6:11*pi/6;
P = myfunc(phi); % function call
function P = myfunc(phi) % function definition
A = 6*(0.8).*sin(phi);
B = 2+(0.8).*cos(phi);
C = 2+(0.8).^2;
D = (1+0.8.*cos(phi)).^2;
P = (A.*B)./(C.*D);
figure,plot(phi,P)
xlabel('Domain'),ylabel('Pressure'),
title('non-dimensional pressure'),
end

6 commentaires
Voir également
Catégories
En savoir plus sur Exponents and Logarithms dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!