如何将 WAV 文件映射为整数并在 Matlab 中播放它们的声音?
How do I map WAV files to integers and play their sounds in Matlab?
我一直在尝试找到一种方法来映射存储在变量 y1
、y2
中的 wavread
读入的 WAV 声音向量与整数 1
, 2
,.. 我目前设置了使用 if/else
语句的代码,其中根据用户输入的整数,听到与该整数键相关的声音。但是,我想删除对 if/else
语句的过度使用。在 MATLAB 中有这样的方法吗?
目前我写的代码如下:
y1=wavread('E:\sound\one.wav');
y2=wavread('E:\sound\two.wav');
y3=wavread('E:\sound\three.wav');
y4=wavread('E:\sound\four.wav');
t=input('prompt:');
if t==1
sound(y1,40000);
elseif t==2
sound(y2,40000);
elseif t==3
sound(y3,40000);
elseif t==4
sound(y4,40000);
else
disp('wrong input');
end
如果您希望提供给定整数到声音信号的映射,最容易使用的是元胞数组——尤其是当每个声音文件的长度不同时。你可以这样做:
y1=wavread('E:\sound\one.wav');
y2=wavread('E:\sound\two.wav');
y3=wavread('E:\sound\three.wav');
y4=wavread('E:\sound\four.wav');
sounds = {y1, y2, y3, y4};
然后您可以通过对应的整数索引访问每个声音。例如,如果您想要第一个声音,只需执行:
s = sounds{1};
您可以将索引更改为您想要的任何声音。
现在,如果您想根据当前代码调整它以摆脱 if/else
语句,只需在给定元胞数组的情况下播放正确的声音即可完成。
像这样:
y1=wavread('E:\sound\one.wav');
y2=wavread('E:\sound\two.wav');
y3=wavread('E:\sound\three.wav');
y4=wavread('E:\sound\four.wav');
sounds = {y1, y2, y3, y4};
t = input('Prompt: ');
if t < 1 || t > numel(t)
disp('Wrong Input');
else
sound(sounds{t}, 40000);
end
最后一条语句允许您删除多个 if/else
语句并将其合并为一个 if/else
语句。
我一直在尝试找到一种方法来映射存储在变量 y1
、y2
中的 wavread
读入的 WAV 声音向量与整数 1
, 2
,.. 我目前设置了使用 if/else
语句的代码,其中根据用户输入的整数,听到与该整数键相关的声音。但是,我想删除对 if/else
语句的过度使用。在 MATLAB 中有这样的方法吗?
目前我写的代码如下:
y1=wavread('E:\sound\one.wav');
y2=wavread('E:\sound\two.wav');
y3=wavread('E:\sound\three.wav');
y4=wavread('E:\sound\four.wav');
t=input('prompt:');
if t==1
sound(y1,40000);
elseif t==2
sound(y2,40000);
elseif t==3
sound(y3,40000);
elseif t==4
sound(y4,40000);
else
disp('wrong input');
end
如果您希望提供给定整数到声音信号的映射,最容易使用的是元胞数组——尤其是当每个声音文件的长度不同时。你可以这样做:
y1=wavread('E:\sound\one.wav');
y2=wavread('E:\sound\two.wav');
y3=wavread('E:\sound\three.wav');
y4=wavread('E:\sound\four.wav');
sounds = {y1, y2, y3, y4};
然后您可以通过对应的整数索引访问每个声音。例如,如果您想要第一个声音,只需执行:
s = sounds{1};
您可以将索引更改为您想要的任何声音。
现在,如果您想根据当前代码调整它以摆脱 if/else
语句,只需在给定元胞数组的情况下播放正确的声音即可完成。
像这样:
y1=wavread('E:\sound\one.wav');
y2=wavread('E:\sound\two.wav');
y3=wavread('E:\sound\three.wav');
y4=wavread('E:\sound\four.wav');
sounds = {y1, y2, y3, y4};
t = input('Prompt: ');
if t < 1 || t > numel(t)
disp('Wrong Input');
else
sound(sounds{t}, 40000);
end
最后一条语句允许您删除多个 if/else
语句并将其合并为一个 if/else
语句。