如何在函数中获取以随机选择的顺序执行的语句?

时间:2014-12-08 22:03:35

标签: matlab if-statement audio random switch-statement

我对Matlab来说相对较新,而且我一直在努力解决我的问题,但我只是不断地走到了死胡同。

我有一个代码,理论上应该以随机顺序播放3个声音(每个试验的每个顺序都不同)。在每次播放声音时,将询问参与者他们听到的声音,然后给出反馈。我已经完成了所有代码,直到随机顺序部分为止。我创建的代码在每个试验中将随机排序1,2和3.

Order = [1, 2, 3]; PhonemeOrder = randperm (numel(Order));

然后我有一个功能播放声音/询问问题等我已经尝试过switch case语句和if else语句取决于PhonemeOrder产生的数量但订单不会改变,即使在音素订单的情况下也是如此。我相信我的问题是,PhonemeOrder像[1,2,3]或[3,1,2]那样出现,这就是我想要的。但我不知道如何让我的声音以它显示的顺序播放,因为我使用的代码就像......

if/ PhonemeOrder = 1; then do this... elseif phonemeorder = 2; then do this... else do this...

或者我尝试过像

这样的代码

switch cases case 1 do this case 2 do this case 3 do this

我猜这是我出错的地方,但我只是不知道如何改变它并让它发挥作用!我希望这是有道理的?我只需要按照phonemeorder指定的顺序播放,每次试用的顺序都会改变。

任何帮助将不胜感激:D

1 个答案:

答案 0 :(得分:1)

bexG,

我认为你走在正确的轨道上。 你唯一需要的是使用" for-loop"通过PhonemeOrder数组。

for i=1:length(PhonemeOrder)
  switch PhonemeOrder(i)
    case 1 
      play the first song
    case 2 
      play the second song 
    case 3 
      play the thrid song
    end
end

我希望这会有所帮助。 如果您有任何其他问题,请与我们联系。