2017-04-23 50 views
-1

我試圖從MATLAB GUI輸入..這是.wav文件,我 已經使用負載的.wav給工作區

uigetfile({'*.wav'},'File Selector'); 

選擇文件。但選中.wav文件還沒有出現在工作區中,我需要.wav文件作進一步分析。

回答

0

當使用uigetfile你必須specufy輸出變量在其中存儲name所選文件的path

[f_name,f_path,sts]=uigetfile({'*.wav'},'File Selector') 

您也應該檢查是選擇了「取消」的用戶(如果他中止選擇);要做到這一點,您可以使用第三個輸出(在上例中爲sts):如果是「取消」,它將被設置爲0

然後,您可以使用函數aurdioread加載"wav文件。

如果您使用的是圖形用戶界面的工作,然後選擇並在callback areading的wav文件,你可以使用函數guidata將數據存儲在GUI數據srtuct爲了能夠,後來,檢索數據和/或跨不同的callback分享。

在下面的一個可能的實現(fullfile函數用於生成該文件的全名 - 「路徑\ FILE_NAME):

% Get the file 
[f_name,f_path,sts]=uigetfile({'*.wav'},'File Selector') 
% If the user selected a file (if he did not click "Cancel") 
if(sts) 
    % Load the ".wav" file 
    [sampled_data,sample_rate]=audioread(fullfile(f_path,f_name)); 
end 

% Get the GUI data 
my_guidata=guidata(gcf) 
% Add the ".wav" file data to the GUI data struct 
my_guidata.sampled_data=sampled_data 
my_guidata.sample_rate=sample_rate 
% Store the GUI data with the ".wav" data 
guidata(gcf,my_guidata) 

希望這有助於

Qapla」

+0

我試了上面的代碼,代碼運行良好,我可以處理數據..但它不會出現在工作空間.. Anywasys感謝您的建議.. il_raffa –

+0

如果您在函數內使用上述代碼,您必須定義它使它返回你的值nt在工作區(類似'[f_name,f_path,sts,sampled_data,sample_rate] = my_function(input_1,input_2)''。用這個定義一個需要2個輸入的函數,然後在工作區中返回文件,路徑和「.wav」數據。如果您正在使用GUI(使用GUIDE創建),則可以使用OutputFcn。 –