matlab fourier series..
2 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
syms n(t)
a1 = exp(30j);
a2 = exp(-30j);
a3 = (-1/(800*pi-200*n*pi));
a4 = (1/(800*pi-200*n*pi));
a5 = (j*(4*pi-n*pi));
a6 = (j*(4*pi+n*pi));
A = 1/2*(a1*(a3*exp(a5))+a3*(exp(a6))+a2*(a4*exp(a6))-a4*exp(a5));
b1 = exp(60j);
b2 = exp(-60j);
b3 = (-1/(1800*pi-200*n*pi));
b4 = (1/(1800*pi-200*n*pi));
b5 = (j*(9*pi-n*pi));
b6 = (j*(9*pi+n*pi));
B = (b1*(b3*exp(b5))+b3*(exp(b6))+b2*(b4*exp(b6))-b4*exp(b5));
c1 = exp(45j);
c2 = exp(-45j);
c3 = (-1/(2400*pi-200*n*pi));
c4 = (1/(2400*pi-200*n*pi));
c5 = (j*(12*pi-n*pi));
c6 = (j*(12*pi+n*pi));
C = 3/2*(c1*(c3*exp(c5))+c3*(exp(c6))+c2*(c4*exp(c6))-c4*exp(c5));
C_n = 1/0.01*(A+B+C);
f_sample = 10e3; %Sampling Frequency
T_sample = 1/f_sample; %Sampling Time
t = [0:T_sample:0.05]; %time for display fs = 1kHz
N=length(t);
for n=1.0000:N
f_t(n)=0;
f_t(n)= C_n*exp(j*n*2*pi*t/0.01);
end
f_t(n)에서 double형 배열로 변환할 수 없다는데.. 무엇이 문제일까요 ㅠ
0 commentaires
Réponses (1)
Angelo Yeo
le 23 Juin 2024
MATLAB에서 'symfun' 타입을 'double' 타입으로 변환할 수 없다는 에러는 주로 심볼릭 변수를 포함한 표현식을 숫자로 변환하려 할 때 발생합니다. 이 문제를 해결하려면, 심볼릭 변수를 실제 값으로 대체한 후 변환해야 합니다. 아래와 같이 subs 함수를 사용하여 심볼릭 변수를 실제 값으로 대체한 다음 변환할 수 있습니다.
syms n(t)
a1 = exp(30j);
a2 = exp(-30j);
a3 = (-1/(800*pi-200*n*pi));
a4 = (1/(800*pi-200*n*pi));
a5 = (j*(4*pi-n*pi));
a6 = (j*(4*pi+n*pi));
A = 1/2*(a1*(a3*exp(a5))+a3*(exp(a6))+a2*(a4*exp(a6))-a4*exp(a5));
b1 = exp(60j);
b2 = exp(-60j);
b3 = (-1/(1800*pi-200*n*pi));
b4 = (1/(1800*pi-200*n*pi));
b5 = (j*(9*pi-n*pi));
b6 = (j*(9*pi+n*pi));
B = (b1*(b3*exp(b5))+b3*(exp(b6))+b2*(b4*exp(b6))-b4*exp(b5));
c1 = exp(45j);
c2 = exp(-45j);
c3 = (-1/(2400*pi-200*n*pi));
c4 = (1/(2400*pi-200*n*pi));
c5 = (j*(12*pi-n*pi));
c6 = (j*(12*pi+n*pi));
C = 3/2*(c1*(c3*exp(c5))+c3*(exp(c6))+c2*(c4*exp(c6))-c4*exp(c5));
C_n = 1/0.01*(A+B+C);
% 심볼릭 변수를 숫자로 대체
n_value = 1; % 적절한 숫자 값으로 n을 대체
C_n_numeric = subs(C_n, n, n_value);
f_sample = 10e3; % Sampling Frequency
T_sample = 1/f_sample; % Sampling Time
t = 0:T_sample:0.05; % time for display fs = 1kHz
N = length(t);
f_t = zeros(1, N);
for n = 1:N
f_t(n) = C_n_numeric * exp(j * n * 2 * pi * t(n) / 0.01);
end
figure;
tiledlayout(2,1)
nexttile;
plot(real(f_t));
nexttile;
plot(imag(f_t))
0 commentaires
Voir également
Catégories
En savoir plus sur Acoustics, Noise and Vibration dans Help Center et File Exchange
Produits
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!