Variables Calculated in Function Somehow Aren't Assigned to Output

1 view (last 30 days)
Dominic Troche on 21 Jul 2021
Edited: Dominic Troche on 21 Jul 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.
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)')
semilogx(w,phase,'b.')
j = j + 1;
end
end
Dominic Troche on 21 Jul 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.

Jonas on 21 Jul 2021
Edited: Jonas on 21 Jul 2021
looks like your two if statements are never fullfilled, thats why output variables are empty
Dominic Troche on 21 Jul 2021
Actually, you're 100% correct. I didnt know MATLAB would assign any outputs if ALL o them werent assigned at some point.