簡體   English   中英

如何獲得函數內的語句以隨機選擇的順序執行?

[英]How can I get statements within functions to execute in a randomly chosen order?

我是Matlab的新手,多年來我一直試圖解決自己的問題,但我一直在不斷走入僵局。

我有一個代碼,理論上應該以隨機順序播放3種聲音(每個嘗試的順序不同)。 在播放每種聲音時,將詢問參與者他們聽到了哪種聲音,然后給出反饋。 我已經完成了所有代碼,直到隨機順序部分為止。 我創建的代碼在每次試用時將隨機排列1,2和3。

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

然后,我有了一個播放聲音/詢問問題等功能,在此函數中,我嘗試切換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

bexG,

我認為您在正確的軌道上。 您唯一需要做的就是使用“ for循環”遍歷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

我希望這將有所幫助。 如果您還有其他問題,請告訴我。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM