clear;
close all;
s1=0.535*exp(1i*2*pi/3); s2=0.535*exp(1i*pi); s3=0.535*exp(1i*4*pi/3);
a1=-0.268-0.154*1i; a2=0.535; a3=-0.268+0.154*1i;
w=linspace(0,pi,200);
H1=a1./(2*((1-exp(-1i*w))/(1+exp(-1i*w)))-s1);
H2=a2./(2*((1-exp(-1i*w))/(1+exp(-1i*w)))-s2);
H3=a3./(2*((1-exp(-1i*w))/(1+exp(-1i*w)))-s3);
H=H1+H2+H3;
subplot(1,2,1);
plot(w/pi,abs(H));
ylabel('abs(H)');
xlabel('w/pi (rad/cycle)');
subplot(1,2,2);
plot(w/pi,20*log10(abs(H)));
ylabel('dB');
xlabel('w/pi (rad/cycle)');
My graph above gives me 2 blank graphs when I run the code and I don't know why, can anyone that is more experienced with matlab tell me why? Thanks in advance

1 Comment

I found it has to do that H is just a value, while it is supposed to be a double. But I still don't know how to fix it

Sign in to comment.

 Accepted Answer

Use element-wise division (./) instead of (/) and it works —
s1=0.535*exp(1i*2*pi/3); s2=0.535*exp(1i*pi); s3=0.535*exp(1i*4*pi/3);
a1=-0.268-0.154*1i; a2=0.535; a3=-0.268+0.154*1i;
w=linspace(0,pi,200);
H1=a1./(2*((1-exp(-1i*w))./(1+exp(-1i*w)))-s1);
H2=a2./(2*((1-exp(-1i*w))./(1+exp(-1i*w)))-s2);
H3=a3./(2*((1-exp(-1i*w))./(1+exp(-1i*w)))-s3);
H=H1+H2+H3;
subplot(1,2,1);
plot(w/pi,abs(H));
ylabel('abs(H)');
xlabel('w/pi (rad/cycle)');
subplot(1,2,2);
plot(w/pi,20*log10(abs(H)));
ylabel('dB');
xlabel('w/pi (rad/cycle)');
See the documentation on Array vs. Matrix Operations for an extended discussion. .

2 Comments

Thank you so much it works! Wishing you and your family a good health in these difficult times
As always, my pleasure!
I wish you and your family the same!

Sign in to comment.

More Answers (0)

Products

Release

R2020a

Community Treasure Hunt

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

Start Hunting!