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 个评论

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

请先登录,再进行评论。

 采纳的回答

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 个评论

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!

请先登录,再进行评论。

更多回答(0 个)

产品

版本

R2020a

Community Treasure Hunt

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

Start Hunting!

Translated by