graph shifting and for loops problem
1 visualizzazione (ultimi 30 giorni)
Mostra commenti meno recenti
Charles Moody
il 25 Feb 2018
Modificato: Walter Roberson
il 22 Mar 2018
I have 2 questions:
1) In this code I use a for loop to populate a linespace that U must graph. But because logicals must be non zero, non negative I always have to start at element 1. But I have to plot it when element 1 in the linespace has to be at the o position on the graph.
2) I have nested loops that indicate the phase angle of a function. This is based off of the sign of the real and imaginary parts of the function. For some reason the phase as shown on the graph is wrong.
%constants
A =1;
B = .5;
j = sqrt(-1);
f1 = 1000; %Hz
f2 = 3000; %Hz
fs = 8000; %Hz
phi = .75*pi;
N1 = 8;
%time linespace
t = 0:1/fs:((N1-1)/fs);
g1 = sin(2*f1*pi*t)+B*sin(2*f2*pi*t + phi);
%for an 8-point DFT we need 12 input samples
xn1 = zeros(1,8);
for i = 1:8
xn1(i) = g1(i);
end
MN1_Matrix = zeros(8,8);
for i = 1:8
for k = 1:8
MN1_Matrix(i,k) = xn1(k)*(cos((((k-1)*2*pi*(i-1))/N1))-(j*sin(((k-1)*2*pi*(i-1))/N1)));
end
end
disp(MN1_Matrix)
for i = 1:8
X1_0(i) = cumsum(MN1_Matrix(1,i));
X1_1(i) = cumsum(MN1_Matrix(2,i));
X1_2(i) = cumsum(MN1_Matrix(3,i));
X1_3(i) = cumsum(MN1_Matrix(4,i));
X1_4(i) = cumsum(MN1_Matrix(5,i));
X1_5(i) = cumsum(MN1_Matrix(6,i));
X1_6(i) = cumsum(MN1_Matrix(7,i));
X1_7(i) = cumsum(MN1_Matrix(8,i));
end
X1_R = [sum(real(X1_0)) sum(real(X1_1)) sum(real(X1_2)) sum(real(X1_3)) sum(real(X1_4)) sum(real(X1_5)) sum(real(X1_6)) sum(real(X1_7))];
X1_I = [sum(imag(X1_0)) sum(imag(X1_1)) sum(imag(X1_2)) sum(imag(X1_3)) sum(imag(X1_4)) sum(imag(X1_5)) sum(imag(X1_6)) sum(imag(X1_7))];
for i = 1:8
X1_MAG(i) = sqrt((X1_R(i)^2) + (X1_I(i)^2));
end
for i = 1:8
if X1_I(i) == 0
X1_ANGLE = 0;
elseif X1_R(i) == 0 && X1_I(i) > 0
X1_ANGLE = -90;
elseif X1_R(i) == 0 && X1_I(i) < 0
X1_ANGLE = 90;
else
X1_ANGLE(i) = atand(X1_I(i)/X1_R(i));
end
end
subplot(2,2,1)
stem(X1_MAG)
xlabel('bin (m*1 kHz)')
ylabel('magnitude')
title('Magnitude of X(m)')
axis([0 9 0 4])
subplot(2,2,2)
stem(X1_ANGLE)
xlabel('bin (m*1 kHz)')
ylabel('phase')
title('Degree Phase of X(m)')
axis([0 9 -100 100])
subplot(2,2,3)
stem(X1_R)
xlabel('bin (m*1 kHz)')
ylabel('magnitude')
title('Real Part of X(m)')
axis([0 9 -.5 1.5])
subplot(2,2,4)
stem(X1_I)
xlabel('bin (m*1 kHz)')
ylabel('magnitude')
title('Imag Part of X(m)')
axis([0 9 -4 4])
0 Commenti
Risposta accettata
Walter Roberson
il 25 Feb 2018
https://www.mathworks.com/help/matlab/ref/stem.html
You can pass x values to stem() to get it to plot with the coordinates you want.
If you use atan2d then you do not need all those if statements to get the proper angle.
0 Commenti
Più risposte (0)
Vedere anche
Categorie
Scopri di più su Graph and Network Algorithms in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!