From f4ab56e3b142a9343ed6184507b11fb2993debe9 Mon Sep 17 00:00:00 2001 From: yomguy Date: Fri, 21 Nov 2008 10:32:42 +0000 Subject: [PATCH] Change analysis input and output, plot_impedance, modify template git-svn-id: http://svn.parisson.org/svn/CNAQ/trunk@199 5fc3e0e6-29bc-4d03-b52b-c088cb822bde --- CNAQ.fig | Bin 14018 -> 16259 bytes CNAQ.m | 126 ++++++++++++++++++++++++++++++++++++++++- tools/plot_impedance.m | 8 +-- tools/plot_main.m | 57 +++++++++++++------ 4 files changed, 168 insertions(+), 23 deletions(-) diff --git a/CNAQ.fig b/CNAQ.fig index ee274f0e603cf65c50e04c892e75ddad1aa57f31..a186180f7387924c02973692357eba1fc788275a 100644 GIT binary patch literal 16259 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 literal 14018 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 diff --git a/CNAQ.m b/CNAQ.m index abd4b71..599bd74 100644 --- a/CNAQ.m +++ b/CNAQ.m @@ -34,7 +34,7 @@ function varargout = CNAQ(varargin) % Author: Guillaume Pellerin -% Last Modified by GUIDE v2.5 08-Apr-2008 18:19:43 +% Last Modified by GUIDE v2.5 21-Nov-2008 10:49:08 % CNAQ, by itself, creates a new CNAQ or raises the existing % singleton*. @@ -169,13 +169,17 @@ set(handles.sig_type,'String','Sinus|Chirp|White noise|Pink noise'); set(handles.channels_in,'String','1|1 2|1 2 3|1 2 3 4|1 2 3 4 5 6 7 8'); set(handles.channels_out,'String','1|1 2|1 2 3|1 2 3 4|1 2 3 4 5 6 7 8'); -set(handles.analysis_type,'String','Default'); +set(handles.analysis_type,'String','Transfer function|Impedance'); set(handles.analysis_method,'String','Division|Deconvolution'); set(handles.analysis_domain,'String','Frequency|Time|Time/Frequency'); set(handles.in_on_off,'UserData',device); set(handles.save_button,'UserData',latency); - +set(handles.analysis_input_sig,'String','Generated|Measured'); +set(handles.analysis_output_sig,'String','Measured|Generated'); +set(handles.analysis_input_ch,'String','1|2|3|4|5|6|7|8'); +set(handles.analysis_output_ch,'String','1|2|3|4|5|6|7|8'); + %============================================ % DATA %============================================ @@ -473,3 +477,119 @@ if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgr end +function r_c_Callback(hObject, eventdata, handles) +% hObject handle to r_c (see GCBO) +% eventdata reserved - to be defined in a future version of MATLAB +% handles structure with handles and user data (see GUIDATA) + +% Hints: get(hObject,'String') returns contents of r_c as text +% str2double(get(hObject,'String')) returns contents of r_c as a double + + +% --- Executes during object creation, after setting all properties. +function r_c_CreateFcn(hObject, eventdata, handles) +% hObject handle to r_c (see GCBO) +% eventdata reserved - to be defined in a future version of MATLAB +% handles empty - handles not created until after all CreateFcns called + +% Hint: edit controls usually have a white background on Windows. +% See ISPC and COMPUTER. +if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) + set(hObject,'BackgroundColor','white'); +end + + + + +% --- Executes on selection change in analysis_output_sig. +function analysis_output_sig_Callback(hObject, eventdata, handles) +% hObject handle to analysis_output_sig (see GCBO) +% eventdata reserved - to be defined in a future version of MATLAB +% handles structure with handles and user data (see GUIDATA) + +% Hints: contents = get(hObject,'String') returns analysis_output_sig contents as cell array +% contents{get(hObject,'Value')} returns selected item from analysis_output_sig + + +% --- Executes during object creation, after setting all properties. +function analysis_output_sig_CreateFcn(hObject, eventdata, handles) +% hObject handle to analysis_output_sig (see GCBO) +% eventdata reserved - to be defined in a future version of MATLAB +% handles empty - handles not created until after all CreateFcns called + +% Hint: popupmenu controls usually have a white background on Windows. +% See ISPC and COMPUTER. +if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) + set(hObject,'BackgroundColor','white'); +end + + +% --- Executes on selection change in analysis_output_ch. +function analysis_output_ch_Callback(hObject, eventdata, handles) +% hObject handle to analysis_output_ch (see GCBO) +% eventdata reserved - to be defined in a future version of MATLAB +% handles structure with handles and user data (see GUIDATA) + +% Hints: contents = get(hObject,'String') returns analysis_output_ch contents as cell array +% contents{get(hObject,'Value')} returns selected item from analysis_output_ch + + +% --- Executes during object creation, after setting all properties. +function analysis_output_ch_CreateFcn(hObject, eventdata, handles) +% hObject handle to analysis_output_ch (see GCBO) +% eventdata reserved - to be defined in a future version of MATLAB +% handles empty - handles not created until after all CreateFcns called + +% Hint: popupmenu controls usually have a white background on Windows. +% See ISPC and COMPUTER. +if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) + set(hObject,'BackgroundColor','white'); +end + + +% --- Executes on selection change in analysis_input_sig. +function analysis_input_sig_Callback(hObject, eventdata, handles) +% hObject handle to analysis_input_sig (see GCBO) +% eventdata reserved - to be defined in a future version of MATLAB +% handles structure with handles and user data (see GUIDATA) + +% Hints: contents = get(hObject,'String') returns analysis_input_sig contents as cell array +% contents{get(hObject,'Value')} returns selected item from analysis_input_sig + + +% --- Executes during object creation, after setting all properties. +function analysis_input_sig_CreateFcn(hObject, eventdata, handles) +% hObject handle to analysis_input_sig (see GCBO) +% eventdata reserved - to be defined in a future version of MATLAB +% handles empty - handles not created until after all CreateFcns called + +% Hint: popupmenu controls usually have a white background on Windows. +% See ISPC and COMPUTER. +if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) + set(hObject,'BackgroundColor','white'); +end + + +% --- Executes on selection change in analysis_input_ch. +function analysis_input_ch_Callback(hObject, eventdata, handles) +% hObject handle to analysis_input_ch (see GCBO) +% eventdata reserved - to be defined in a future version of MATLAB +% handles structure with handles and user data (see GUIDATA) + +% Hints: contents = get(hObject,'String') returns analysis_input_ch contents as cell array +% contents{get(hObject,'Value')} returns selected item from analysis_input_ch + + +% --- Executes during object creation, after setting all properties. +function analysis_input_ch_CreateFcn(hObject, eventdata, handles) +% hObject handle to analysis_input_ch (see GCBO) +% eventdata reserved - to be defined in a future version of MATLAB +% handles empty - handles not created until after all CreateFcns called + +% Hint: popupmenu controls usually have a white background on Windows. +% See ISPC and COMPUTER. +if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) + set(hObject,'BackgroundColor','white'); +end + + diff --git a/tools/plot_impedance.m b/tools/plot_impedance.m index 93ccbe6..af1f013 100644 --- a/tools/plot_impedance.m +++ b/tools/plot_impedance.m @@ -1,7 +1,7 @@ % Loudspeaker impedance post-processing from a 2 voice acquisition from CNAQ % Copyright (C) Guillaume Pellerin -function plot_impedance(fic_mes, R_c, option) +function plot_impedance(sig_mes, R_c, option) % fic_resistance : the (CNAQ) MAT file containing the transfert function of the % resistance @@ -11,7 +11,7 @@ function plot_impedance(fic_mes, R_c, option) % option : 'lin' or 'log' to plot the frequency with a linear or % logarithmic scale respectively -load(fic_mes); +%load(fic_mes); U_r = sig_mes(:,1); I_r = sig_mes(:,1)/R_c; U_hp = sig_mes(:,2)-U_r; @@ -33,7 +33,7 @@ f_min_ind = f_min_list(length(f_min_list)); figure subplot(2,1,1); -data = abs(fz); +data = smooth(abs(fz),20); if option == 'lin' plot(f,data) elseif option == 'log' @@ -46,7 +46,7 @@ title(['Module de l impedance']); grid on subplot(2,1,2); -data = unwrap(angle(fz)); +data = smooth(unwrap(angle(fz)),20); if option == 'lin' plot(f,data) elseif option == 'log' diff --git a/tools/plot_main.m b/tools/plot_main.m index 5350094..34803c8 100644 --- a/tools/plot_main.m +++ b/tools/plot_main.m @@ -21,25 +21,50 @@ function plot_main(handles) type = get(handles.analysis_type,'Value'); method = get(handles.analysis_method,'Value'); domain = get(handles.analysis_domain,'Value'); - - % Compute excitation spectrum - [rep_imp_exc, spec_exc] = get_ri_spec(f, sig_exc, sig_exc, f_s, method); - len_spec_exc = length(spec_exc); - spec_exc = spec_exc(1:len_spec_exc/2); + analysis_input_sig = get(handles.analysis_input_sig,'Value'); + analysis_output_sig = get(handles.analysis_output_sig,'Value'); + analysis_input_ch = get(handles.analysis_input_ch,'Value'); + analysis_output_ch = get(handles.analysis_output_ch,'Value'); + r_c = get(handles.r_c,'Value'); + + if analysis_input_sig == 1 + input_sig = sig_exc; + elseif analysis_input_sig == 2 + input_sig = sig_mes; + end + if analysis_output_sig == 2 + output_sig = sig_exc; + elseif analysis_output_sig == 1 + output_sig = sig_mes; + end + + if type == 1 + % Transfer function - % Compute all Ris and specs - for i=1:n_col_sig_mes - channel = num2str(i); - [rep_imp_mes, spec_mes] = get_ri_spec(f, sig_exc, sig_mes(:,i), f_s, method); - len_spec_mes = length(spec_mes); - spec_mes = spec_mes(1:len_spec_mes/2); - % Plot results - f_lin = [0:f_s/len_spec_mes:f_s/2]; - f_lin = f_lin(1:length(f_lin)-1); - plot_mes(t, f_lin, f_s, f_min, f_max, sig_exc, sig_mes(:,i), rep_imp_mes, spec_mes, spec_exc, id, channel, username, comment, i, domain); + % Compute excitation spectrum + [rep_imp_exc, spec_exc] = get_ri_spec(f, sig_exc, sig_exc, f_s, method); + len_spec_exc = length(spec_exc); + spec_exc = spec_exc(1:len_spec_exc/2); + + % Compute all Ris and specs + for i=1:n_col_sig_mes + channel = num2str(i); + [rep_imp_mes, spec_mes] = get_ri_spec(f, input_sig, output_sig(:,i), f_s, method); + len_spec_mes = length(spec_mes); + spec_mes = spec_mes(1:len_spec_mes/2); + % Plot results + f_lin = [0:f_s/len_spec_mes:f_s/2]; + f_lin = f_lin(1:length(f_lin)-1); + plot_mes(t, f_lin, f_s, f_min, f_max, input_sig, output_sig(:,i), rep_imp_mes, spec_mes, spec_exc, id, channel, username, comment, i, domain); + end end - set(handles.close_button,'UserData',f_lin'); + if type == 2 + % Impedance + plot_impedance(sig_mes, r_c) + end + + set(handles.close_button,'UserData','f_lin'); set(handles.plot,'UserData',t); end -- 2.39.5