プログラムのエラー表示

5 visualizzazioni (ultimi 30 giorni)
Kaede
Kaede il 19 Ago 2020
Risposto: michio il 21 Ago 2020
ホワイトノイズにバンドパスフィルタをかけたものは上手く表示できたのにピングノイズにバンドパスフィルタをかけるとこのようなエラー表示がでます.データ数Nはp1に合わせて448512にしてあります.
要求された 448512x448505 (1498.8GB) 配列は、最大配列サイズの設定を超え
ています。この制限より大きい配列を作成すると、処理に時間がかかり、MATLAB
が反応しなくなることがあります。詳細については、配列サイズの制限または設定パ
ネルを参照してください。
エラー: pinknoiseknock (line 18)
smix_Lch=6*Lch_p1+Lch_p2/10+y/10;
[p1,fs]=audioread('40kph_RN.wav');
[p2,fs]=audioread('2000rpm_Knock.wav');
fs=44100;
L=8;N=448505;
%x=[zeros(L-1,1);randn(N,1)];
g=randp(N);
y=filter(Num,1,g)
p2(448512,[1 2]) = [0,0];
Lch_p1=p1(:,1);
Rch_p1=p1(:,2);
Lch_p2=p2(:,1);
Rch_p2=p2(:,2);
smix_Lch=6*Lch_p1+Lch_p2/10+y/10;
%soundsc(smix_Lch,fs)
filename='mix_Lch.wav';
audiowrite(filename,smix_Lch,fs);
smix_Rch=6*Rch_p1+Rch_p2/10+y/10;
%soundsc(smix_Rch,fs)
filename='mix_Rch.wav';
audiowrite(filename,smix_Rch,fs);
%y=filter(Num,1,g)
fft_white=fft(y/10);
dB_white=mag2db(abs(fft_white));
fft_p1L=fft(6*Lch_p1);
dB_p1L=mag2db(abs(fft_p1L));
fft_p1R=fft(6*Rch_p1);
dB_p1R=mag2db(abs(fft_p1R));
fft_p2L=fft(Lch_p2/10);
dB_p2L=mag2db(abs(fft_p2L));
fft_p2R=fft(Rch_p2/10);
dB_p2R=mag2db(abs(fft_p2R));
f = (0:length(fft_p1L)-1)*fs/length(fft_p1L);
figure(1)
semilogx(f,dB_p2L)
xlim([0 fs/2])
ylim([-100,100])
xlabel('frequency[Hz]')
ylabel('Magnitude[dB]')
hold on
semilogx(f,dB_p1L)
grid on, hold off
hold on
semilogx(f,dB_white)
grid on, hold off
legend('2000rpm.knock','roadnoise','whitenoise');
figure(2)
semilogx(f,dB_p2R)
xlim([0 fs/2])
ylim([-100,100])
xlabel('frequency[Hz]')
ylabel('Magnitude[dB]')
hold on
semilogx(f,dB_p1R)
grid on, hold off
hold on
semilogx(f,dB_white)
grid on, hold off
legend('2000rpm.knock','roadnoise','whitenoise');

Risposta accettata

michio
michio il 21 Ago 2020
smix_Lch=6*Lch_p1+Lch_p2/10+y/10;
の計算において、448512x1 のベクトルと 1x448505 のベクトルの足し算が発生しているのかと想像しています。
各変数の配列サイズを確認してみてください。
簡単な例ですと、10x1 と 1x10 のベクトルを足し合わせると 10x10 の配列が作られます。
x = rand(10,1);
y = rand(1,10);
z = x+y;
whos z
Name Size Bytes Class Attributes
z 10x10 800 double

Più risposte (0)

Prodotti

Community Treasure Hunt

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

Start Hunting!