Variables Calculated in Function Somehow Aren't Assigned to Output

1 vue (au cours des 30 derniers jours)
Dominic Troche
Dominic Troche le 21 Juil 2021
Modifié(e) : Dominic Troche le 21 Juil 2021
My code was working only a day ago, but it just stopped giving me output. I know it calculates the variables I need (wg,pm) becasue it will display them, but it never leaves the scope of the for loop. I know its gotta be something simple, but I'm stumped.
function[wp,pm,wg,gm] = pleaseWork(tf_in)
tf = inline(tf_in,'r')
figure
j = 1
for w = 0:0.1:100
magDB = 20*log10(abs(tf(i*w)));
phase = mod((180/pi)*atan2(imag(tf(i*w)),real(tf(i*w))),-360);
if round(magDB) == 0
wg = w
pm = phase + 180
end
if round(phase) == -180
wp = w
gm = -magDB
end
hold on
subplot(2,1,1)
title('HW 2 #9')
ylabel('Magnitude (dB)')
semilogx(w,20*log10(abs(tf(i*w))),'b.')
hold on
subplot(2,1,2)
ylabel('Phase (deg)')
xlabel('Angular Frequency (rad/s)')
semilogx(w,phase,'b.')
j = j + 1;
end
end
  2 commentaires
Torsten
Torsten le 21 Juil 2021
Before entering the for-loop, assign values to wg,pm,wp,gm (e.g. NaN).
What's the relevance of the variable j ?
Dominic Troche
Dominic Troche le 21 Juil 2021
Modifié(e) : Dominic Troche le 21 Juil 2021
Yeah that was it, I had no idea MATLAB wouldnt output if all outputs weren't assigned. j was accidentally copy and pasted over to this post, I truncated a lot of the code for readability.

Connectez-vous pour commenter.

Réponse acceptée

Jonas
Jonas le 21 Juil 2021
Modifié(e) : Jonas le 21 Juil 2021
looks like your two if statements are never fullfilled, thats why output variables are empty
  2 commentaires
Dominic Troche
Dominic Troche le 21 Juil 2021
Modifié(e) : Dominic Troche le 21 Juil 2021
They're fufilled, as I can get it to display what I need while the function is executing. I just cant get it to output that value.
For example with a transfer function '50/(r*(r+1))'
Dominic Troche
Dominic Troche le 21 Juil 2021
Actually, you're 100% correct. I didnt know MATLAB would assign any outputs if ALL o them werent assigned at some point.

Connectez-vous pour commenter.

Plus de réponses (0)

Community Treasure Hunt

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

Start Hunting!

Translated by