1

私のコードは以下のとおりです。私がやりたいのは、5つの個別のft配列を取得し、それらすべてを重ね合わせたサウンドを再生できるように、それらをforループ内に追加することです。助けてくれてありがとう!

`fs = 44100;  % standard sampling rate
T = 1/fs;    % sampling period
t = 0:T:5;   % time vector
conv = 1E5;  % conversion factor for frequencies

phi=2*pi*rand(1,1); % random phase

Msun = 2E30; % mass of the sun
Rsun = 6.9599E5; % radius of the sun
M = 1E32; % mass of target star
R = 7E5; % radius of target star
Teff = 6000;

% frequency of maximum oscillation mode

vmax  = 3090*(M/Msun)*(R/Rsun)^(-2) * (Teff/5777)^(-1/2);

% difference between consecutive frequencies

dv = 134.9*(M/Msun)^(1/2) * (R/Rsun)^(-3/2);


for n = 0:1:4

    vi = vmax + n.*dv; % pulsation mode frequencies
    ft = sin(2*pi.*vi.*t + phi); % sinusoidal perturbation function
    cft = conv.*ft; % converted perturbation for human audible range
    sound(cft, fs) % play sound of each frequency mode

end

`

4

1 に答える 1

1

重ね合わせを行うには、個々のサウンドを合計する必要があります。ループcft = 0;の前に、次にcft = cft + conv.*ft;内部で実行します。ループの後、を呼び出しますsound(cft, fs)

于 2013-02-20T20:39:37.267 に答える