我可以通过批处理在Matlab中将许多图形另存为位图吗?

疏远的

我希望以.wav格式分析matlab中的长音频文件,并将音频的整个长度导出为2048x2048像素位图的频谱图。对于一秒钟的声音,我想自动执行约20个位图,并且我想让Matlab处理并在几个小时的过程中返回1000个位图以获得长音频,然后在另一个程序中进行进一步处理。

初学者有可能吗?

跟踪cc

这里是一个旧的SciLab实现,可以帮助您入门。我建议将生成的频谱图保存为数据,而不是图像。并编写另一个可以将数据转换为图像的函数。

// For simple plotting, Positions in Milliseconds!!
function plotASpectrogram( source, startPosition, endPosition )

  [audio,sampleRate] = wavread(source);  

  startPosition = msecToSamples(startPosition, sampleRate);
  endPosition   = msecToSamples(endPosition, sampleRate);

  audio = cropAudio(audio, startPosition, endPosition );

  mapsound(audio);//,.1,100,2000,1,sampleRate);

  //Label axes   
  startPosition = samplesToMsec(startPosition, sampleRate);  

  if(startPosition==0)
    startPosition = "";
  else
    startPosition = " + " + string(startPosition/1000);
  end      

  labelTheAxes("", "", "Spec " + string(getNameFromSource(source)));  
endfunction

// Create a linear spectrogram
// parameter [in] audio - audio file read in with wavread
// parameter [in] specFreqSamples - number of frequencies
// parameter [in] specTimeSamples - number of time samples
// parameter [in] specOverlap - amount of overlap in spectrogram windows
// parameter [in] hann - precalculated hanning window for smoothing
// parameter [out] tempSpec - A matrix containing the spectrogram
function tempSpec = createLinearSpectrogram( audio, specFreqSamples, specTimeSamples, specOverlap, hann )

  //Allocate memory for the input and output arrays. 
  tempSpec = zeros(St,specFreqSamples);
  in       = zeros(specTimeSamples);    //The input will have real values,
  out      = zeros(specFreqSamples,2);  //While the output will have complex values.It is also 1/2 the length of the input array +1.

  for i = 1:St
    //Store the input data into the input array
    for j = 1:specTimeSamples
      in(j) = audio(1,(i-1) * specTimeSamples/specOverlap + j);
      in(j) = in(j) * hann(j);
    end

    //Execute the FFT
    out(1:specTimeSamples,1) = real(fftw(in(1:specTimeSamples),1));
    out(1:specTimeSamples,2) = imag(fftw(in(1:specTimeSamples),1));

    //Convert the output into complex data and calculate the absolute value of every
    //output. Store it into the spectrogram array.
    for j = 1:specFreqSamples
      tempSpec(i,j) = sqrt(out(j,1) * out(j,1) + out(j,2) * out(j,2));
    end     
  end
endfunction

// Some utility functions
function labelTheAxes(Title, LabelX, LabelY)

  a=get("current_axes");
  a.x_label;
  a.y_label;
  xtitle(string(Title),string(LabelX), string(LabelY)); 

endfunction

function numberOfSamples = msecToSamples( numberOfMilliSeconds, sampleRate)
  numberOfSamples   = round((numberOfMilliSeconds / 1000) * sampleRate);
endfunction

function croppedAudio = cropAudio(audio, startPosition, endPosition)
  //Parameters in Samples!!!
  croppedAudio = audio(1,startPosition:endPosition);
endfunction

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在Kotlin中将位图另存为图像

我可以在Heroku中将对象另存为配置变量吗?

我可以通过ClosedXML将EXCEL工作表另存为CSV吗?

我可以使用“ normal”(有思想的)python将numpy数组另存为16位图像吗?

我可以编辑Visio形状并另存为新的吗?

在GUI Matlab中将另存为按钮

在Matlab GUI中将动画另存为gif

我可以将%sql块的输出另存为对象吗?

我可以将整个滚动窗格另存为“ pdf”吗?

我可以用Excel中的VBA保存功能替换“保存”或“另存为”按钮吗?

将位图另存为jpeg图像

xlsxwriter-您可以另存为xls文件吗

可以将结构成员另存为变量吗?

在MATLAB中另存为ascii时数字的格式始终是科学的吗?可以更改吗?

将Matplotlib图形另存为TIFF

在Windows中将文件另存为.RProfile

在 UWP 中将画布另存为图像

用excel打开html文档用批处理文件另存为xls

当图形另存为PDF时,为什么Matlab使用Latex在图例中放置文本空间?

将Matlab图形另存为EPS文件时发生失真

如何在MATLAB中将3D动画线另存为视频或gif

在Matlab中将单元格数组另存为.xlsx或.csv文件

VB .NET 2010:将大位图另存为文件

就像html页面在文本编辑器中编码并另存为.html一样,我们可以通过编码jpg文件来做同样的事情吗?

是否可以在Echarts中将图表另存为图像而无需工具箱交互?

硒可以用于单击打印,然后另存为pdf吗?

将图形另存为 PDF 时,dpi 是否相关?

在seaborn中,如何增加图形并另存为图像?

python matplotlib将图形另存为数据文件