Variables Calculated in Function Somehow Aren't Assigned to Output

8 visualizaciones (últimos 30 días)
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 comentarios
Torsten
Torsten el 21 de Jul. de 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 el 21 de Jul. de 2021
Editada: Dominic Troche el 21 de Jul. de 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.

Iniciar sesión para comentar.

Respuesta aceptada

Jonas
Jonas el 21 de Jul. de 2021
Editada: Jonas el 21 de Jul. de 2021
looks like your two if statements are never fullfilled, thats why output variables are empty
  2 comentarios
Dominic Troche
Dominic Troche el 21 de Jul. de 2021
Editada: Dominic Troche el 21 de Jul. de 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 el 21 de Jul. de 2021
Actually, you're 100% correct. I didnt know MATLAB would assign any outputs if ALL o them werent assigned at some point.

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Logical en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by