I think i would aslo need to re formulate the figure title to be depending on the user input Freq and the picked nd(Node number), is that even possible?
A problem with recalling a function
3 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Abdelrhman Abdelfatah
am 27 Nov. 2021
Beantwortet: Abdelrhman Abdelfatah
am 30 Nov. 2021
So I have a code, that calculate the output voltage at the three Nodes of an RC Circuit based on the user's Input frequncy.. ( one of three, 1Hz, 8Hz, or 20Hz) .. And the user had only 3 choices, And i designed it using the following errorflag
errorflag = 0;
while (errorflag == 0)
disp(' ')
disp ('Which Frequency do you want to use?')
disp (' (1) 1Hz ')
disp (' (2) 8Hz')
disp (' (3) 20Hz')
freq_choice=input('Please enter choice (1, 2, 3) > ');
disp(' ')
% check for valid input
if( freq_choice == 1 || freq_choice == 2 || freq_choice == 3)
errorflag =1;
else
disp(' *** Invalid choice ')
disp(' *** Please respond with a 1, 2, or 3 ')
disp(' *** Press ENTER to continue ' )
pause
end % if
end % while
Based on the user input, let's assume he chose 1Hz, the output would be a subplot of the output voltage at Node1, Node2, and Node 3.. with 1Hz frequncy.
Now I want to improve the code a bit, expanding the choices to 6 as shown below
errorflag = 0;
while (errorflag == 0)
disp(' ')
disp ('Which analysis do you want to make?')
disp (' (1) Using 1Hz freq across all three Nodes (1&2&3) ')
disp (' (2) Using 8Hz freq across all three Nodes (1&2&3)')
disp (' (3) Using 20Hz freq across all three Nodes (1&2&3)')
disp (' (4) At Node1 ONLY across all three Freq (1Hz & 8Hz & 20Hz)')
disp (' (5) At Node2 ONLY across all three Freq (1Hz & 8Hz & 20Hz)')
disp (' (6) At Node3 ONLY across all three Freq (1Hz & 8Hz & 20Hz)')
freq_choice=input('Please enter choice (1, 2, 3,4,5,6) > ');
disp(' ')
% check for valid input
if( freq_choice == 1 || freq_choice == 2 || freq_choice == 3 || freq_choice == 4 || freq_choice == 5 || freq_choice == 6)
errorflag =1;
else
disp(' *** Invalid choice ')
disp(' *** Please respond with a 1, 2, 3, 4, 5 or ')
disp(' *** Press ENTER to continue ' )
pause
end % if
end % while
And I want to design a function, that takes two inputs from the user .. freq ( the input frequency) and nd (the node number, 1 ,2 or 3) .. (I was not sure about posting the whole code, so I added (......) replacing the circuit formulation part, and left the part that's connected with the two vraibles i wasnt ( freq , nd)
function dc=requiredgraph (freq, nd)
% Declare the number of the nodes and Matricies from the circuit nodal formulation (G ,C ,B)
......
% Our simulation conditions { End time (T) / Number of Points (N) }
......
% The Initial Conditions
......
% Time Vector, based on the Number of Points (N)
.......
%Definining the Input Voltage based on Freq
for i=1:N
Vin(i)=cos(2*pi*freq*t(i));
end
% Solve For V using the Time March Technique
V(:,1)=Vo;
for i=2:N
V(:,i)=((C+G*dt))\(C*V(:,i-1)+B*Vin(i)*dt);
%plotting the function
figure
plot(t,V(nd,:));
title('The Output voltage at Node2, at Frequency of 1Hz');
xlabel('Time');
ylabel('The Output Voltage');
grid on
end
end
Now, if i want to recall this function to plot the graph of output at Node 2 ( nd=2) and Freq of 8Hz ( freq=8) .. How can I do this? Sorry for the long question, and please let me know if there is any missing info.
Thanks in advance. And help is highly appreictated
2 Kommentare
Dr. Kelsey Joy
am 27 Nov. 2021
I recommend revising how you prevent your user from proceeding based on their input. Here is some sample code to help you out with your errorflag portion of code: https://www.mathworks.com/matlabcentral/fileexchange/102674-educational-validating-user-inputs-numbers-and-strings?s_tid=prof_contriblnk
Akzeptierte Antwort
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Functions finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!