我正在尝试从音频文件中获取宽度为 17 的矩阵。我得到错误使用 .* 矩阵尺寸必须一致。这是什么意思,我应该如何解决它?
错误在windowed_frame = window.*input(((k-1)*bins*overlap)+1:(((k-1))*bins*overlap)+1+bins-1);
[input fs] = wavread('3_1.wav');
fn = fs/2;
bins = 512; %useable bins
frame_length = bins;
window = hamming(frame_length);
overlap = .5;
number_of_frames = (length(input)/(frame_length)/overlap) - 1;
for k=1:number_of_frames
        windowed_frame = window.*input(((k-1)*bins*overlap)+1:(((k-1))*bins*overlap)+1+bins-1);
        fft_window = fft(windowed_frame,bins*2);
        fft_window = abs(fft_window(1:bins));
        fft_energy = fft_window.^2;
        freq_vector = [fn/bins:fn/bins:fn];
编辑:完整代码函数 test_energy = energy_per_frame(file)
[输入 fs] = wavread('1_2.wav');
fn = fs/2;
bins = 512; %useable bins
frame_length = bins;
window = hamming(frame_length);
overlap = .5;
number_of_frames = (length(input)/(frame_length)/overlap) - 1;
for k=1:number_of_frames
    windowed_frame = (window.*input(((k-1)*bins*overlap)+1:(((k-1))*bins*overlap)+1+bins-1)).';
        fft_window = fft(windowed_frame,bins*2);
        fft_window = abs(fft_window(1:bins));
        fft_energy = fft_window.^2;
        freq_vector = [fn/bins:fn/bins:fn];
        %map bark (z) to bins (1-512) and frequency (freq_vector)
        for i=1:length(freq_vector)
            z(i) = 13*atan(0.76*(freq_vector(i)/1000)) + 3.5*atan(((freq_vector(i)/1000)/7.5).^2);    
        end
        z = floor(z);
        for j=1:length(z);
            if z(j) == 17
                z(j)=16;
            end
        end
        temp = 0;
        temp_sum = 0;
        count = 0;
        %calculate the energy per bark band
        for i=1:length(z)
           if temp == z(i)
               temp_sum = fft_energy(i)+ temp_sum;
               test_energy(k,temp+1) = temp_sum; 
               count = count+1;
           end
           if temp ~= z(i)   
              test_energy(k,temp+1) = temp_sum/count;
              temp = temp+1;
              temp_sum = fft_energy(i);
              count = 1;
           end  
        end  
end