📄 demosimilaritygraphs.m
字号:
% ULE: global GD_Global; GD_Global.CurrentDataDim = ceil(get(hObject,'Value'));InitializeSliders(handles);% DrawDataAndPlot(handles); % ComputeSimilarityAndPlot(handles); % ComputeGraphAndPlot(handles, 1)% ComputeGraphAndPlot(handles, 2)% --- Executes during object creation, after setting all properties.function slider_num_dim_CreateFcn(hObject, eventdata, handles)% hObject handle to slider_num_dim (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles empty - handles not created until after all CreateFcns called% Hint: slider controls usually have a light gray background.if isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor',[.9 .9 .9]);end% --- Executes on selection change in which_similarity_function.function which_similarity_function_Callback(hObject, eventdata, handles)% hObject handle to which_similarity_function (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 which_similarity_function contents as cell array% contents{get(hObject,'Value')} returns selected item from which_similarity_function% --- Executes during object creation, after setting all properties.function which_similarity_function_CreateFcn(hObject, eventdata, handles)% hObject handle to which_similarity_function (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 slider movement.function slider_sigma_Callback(hObject, eventdata, handles)% hObject handle to slider_sigma (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,'Value') returns position of slider% get(hObject,'Min') and get(hObject,'Max') to determine range of sliderglobal GD_Global; GD_Global.CurrentSigma = 10^(get(hObject,'Value')) ;InitializeSliders(handles);% % clear all the axes% %cla(handles.axes_data_left)% cla(handles.axes_data_middle)% cla(handles.axes_data_right)% cla(handles.axes_graph1_left)% cla(handles.axes_graph1_middle)% cla(handles.axes_graph1_right)% cla(handles.axes_graph1_rr)% cla(handles.axes_graph2_left)% cla(handles.axes_graph2_middle)% cla(handles.axes_graph2_right)% cla(handles.axes_graph2_rr)% drawnow% ComputeSimilarityAndPlot(handles);% ComputeGraphAndPlot(handles, 1)% ComputeGraphAndPlot(handles, 2)% --- Executes during object creation, after setting all properties.function slider_sigma_CreateFcn(hObject, eventdata, handles)% hObject handle to slider_sigma (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles empty - handles not created until after all CreateFcns called% Hint: slider controls usually have a light gray background.if isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor',[.9 .9 .9]);end% --- Executes on button press in button_graph1.function button_graph1_Callback(hObject, eventdata, handles)% hObject handle to button_graph1 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% ULE: ComputeGraphAndPlot(handles,1);% --- Executes on button press in button_graph2.function button_graph2_Callback(hObject, eventdata, handles)% hObject handle to button_graph2 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% ULE: ComputeGraphAndPlot(handles,2);% --- Executes on button press in button_data.function button_data_Callback(hObject, eventdata, handles)% hObject handle to button_data (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)%ULE: DrawDataAndPlot(handles); ComputeSimilarityAndPlot(handles); ComputeGraphAndPlot(handles, 1)ComputeGraphAndPlot(handles, 2)% --- Executes on button press in button_update_data_plots_only.function button_update_data_plots_only_Callback(hObject, eventdata, handles)% hObject handle to button_update_data_plots_only (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)%ULE: DrawDataAndPlot(handles); ComputeSimilarityAndPlot(handles); % ------------------------------------------------------------% ------------------------------------------------------------% Ules functions: % ------------------------------------------------------------% ------------------------------------------------------------% ------------------------------------------------------------function InitializeSliders(handles)% ------------------------------------------------------------% after changing something about the data set, the sliders min/max/current values% have to be reset: global GD_Global;%disp('start init')% slider num points: set(handles.slider_num_points,... 'Value', GD_Global.CurrentNumPoints, ... 'Min', GD_Global.MinNumPoints, ... 'Max', GD_Global.MaxNumPoints);set(handles.text_min_num_points,'String',num2str(GD_Global.MinNumPoints))set(handles.text_max_num_points,'String',num2str(GD_Global.MaxNumPoints))set(handles.text_current_num_points,'String',['Number of data points: ', num2str(GD_Global.CurrentNumPoints)])% slider num dim: set(handles.slider_num_dim,... 'Value', GD_Global.CurrentDataDim, ... 'Min', GD_Global.MinDataDim, ... 'Max', GD_Global.MaxDataDim);set(handles.text_min_num_dim,'String',num2str(GD_Global.MinDataDim))set(handles.text_max_num_dim,'String',num2str(GD_Global.MaxDataDim))set(handles.text_current_num_dim,'String',['Data Dimensions: ', num2str(GD_Global.CurrentDataDim)])% slider sigma: set(handles.slider_sigma,... 'Value', log10(GD_Global.CurrentSigma), ... 'Min', (GD_Global.MinLogSigma), ... 'Max', (GD_Global.MaxLogSigma));set(handles.text_min_sigma,'String',['10^(',num2str(GD_Global.MinLogSigma),')'])set(handles.text_max_sigma,'String',['10^(',num2str(GD_Global.MaxLogSigma),')'])set(handles.text_current_sigma,'String',['Kernel width sigma: ', num2str(GD_Global.CurrentSigma,'%2.2g')])% adjust all paras for graph1, depending on graph type: set(handles.type_graph1, 'Value', GD_Global.CurrentGraph1);switch GD_Global.CurrentGraph1 case 1 %eps graph set(handles.slider_graph_para1, 'Min', GD_Global.MinEps, 'Max',GD_Global.MaxEps);set(handles.slider_graph_para1, 'Value', GD_Global.CurrentGraphPara1); %set after setting min/max set(handles.text_graph_para1,'String', ['Current eps: ', num2str(GD_Global.CurrentGraphPara1)]) set(handles.text_min_graph1,'String', num2str(GD_Global.MinEps)) set(handles.text_max_graph1,'String', num2str(GD_Global.MaxEps)) set(handles.text_min_graph1, 'Visible','on') set(handles.text_max_graph1, 'Visible','on') set(handles.slider_graph_para1,'Visible','on') case 2 %symmetric knn set(handles.slider_graph_para1, 'Min', GD_Global.MinK, 'Max',GD_Global.MaxK);set(handles.slider_graph_para1, 'Value', ceil(GD_Global.CurrentGraphPara1)); %set after setting min/max set(handles.text_graph_para1,'String', ['Current k: ', num2str(ceil(GD_Global.CurrentGraphPara1))]) set(handles.text_min_graph1,'String', num2str(GD_Global.MinK)) set(handles.text_max_graph1,'String', num2str(GD_Global.MaxK)) set(handles.text_min_graph1, 'Visible','on') set(handles.text_max_graph1, 'Visible','on') set(handles.slider_graph_para1,'Visible','on') set(handles.slider_graph_para1','SliderStep',[1 / (GD_Global.MaxK - GD_Global.MinK), 0.1]) case 3 %mutual knn] set(handles.slider_graph_para1, 'Min', GD_Global.MinK, 'Max',GD_Global.MaxK);set(handles.slider_graph_para1, 'Value', ceil(GD_Global.CurrentGraphPara1)); %set after setting min/max set(handles.text_graph_para1,'String', ['Current k: ', num2str(ceil(GD_Global.CurrentGraphPara1))]) set(handles.text_min_graph1,'String', num2str(GD_Global.MinK)) set(handles.text_max_graph1,'String', num2str(GD_Global.MaxK)) set(handles.text_min_graph1, 'Visible','on') set(handles.text_max_graph1, 'Visible','on') set(handles.slider_graph_para1,'Visible','on') set(handles.slider_graph_para1','SliderStep',[1 / (GD_Global.MaxK - GD_Global.MinK), 0.1]) case 4 %eps graph unweighted set(handles.slider_graph_para1, 'Min', GD_Global.MinEps, 'Max',GD_Global.MaxEps);set(handles.slider_graph_para1, 'Value', GD_Global.CurrentGraphPara1); %set after setting min/max set(handles.text_graph_para1,'String', ['Current eps: ', num2str(GD_Global.CurrentGraphPara1)]) set(handles.text_min_graph1,'String', num2str(GD_Global.MinEps)) set(handles.text_max_graph1,'String', num2str(GD_Global.MaxEps)) set(handles.text_min_graph1, 'Visible','on') set(handles.text_max_graph1, 'Visible','on') set(handles.slider_graph_para1,'Visible','on')end% adjust all paras for graph2, depending on graph type: set(handles.type_graph2, 'Value', GD_Global.CurrentGraph2);switch GD_Global.CurrentGraph2 case 1 %eps graph weighted set(handles.slider_graph_para2, 'Min', GD_Global.MinEps, 'Max',GD_Global.MaxEps); set(handles.slider_graph_para2, 'Value', GD_Global.CurrentGraphPara2); %set after setting min/max set(handles.text_graph_para2,'String', ['Current eps: ', num2str(GD_Global.CurrentGraphPara2)]) set(handles.text_min_graph2,'String', num2str(GD_Global.MinEps)) set(handles.text_max_graph2,'String', num2str(GD_Global.MaxEps)) set(handles.text_min_graph2, 'Visible','on') set(handles.text_max_graph2, 'Visible','on') set(handles.slider_graph_para2,'Visible','on') case 2 %symmetric knn set(handles.slider_graph_para2, 'Min', GD_Global.MinK, 'Max',GD_Global.MaxK); set(handles.slider_graph_para2, 'Value', ceil(GD_Global.CurrentGraphPara2)); %set after setting min/max set(handles.text_graph_para2,'String', ['Current k: ', num2str(ceil(GD_Global.CurrentGraphPara2))]) set(handles.text_min_graph2,'String', num2str(GD_Global.MinK)) set(handles.text_max_graph2,'String', num2str(GD_Global.MaxK)) set(handles.text_min_graph2, 'Visible','on') set(handles.text_max_graph2, 'Visible','on') set(handles.slider_graph_para2,'Visible','on') set(handles.slider_graph_para2','SliderStep',[1 / (GD_Global.MaxK - GD_Global.MinK), 0.1]) case 3 %mutual knn] set(handles.slider_graph_para2, 'Min', GD_Global.MinK, 'Max',GD_Global.MaxK); set(handles.slider_graph_para2, 'Value', ceil(GD_Global.CurrentGraphPara2)); %set after setting min/max set(handles.text_graph_para2,'String', ['Current k: ', num2str(ceil(GD_Global.CurrentGraphPara2))]) set(handles.text_min_graph2,'String', num2str(GD_Global.MinK)) set(handles.text_max_graph2,'String', num2str(GD_Global.MaxK)) set(handles.text_min_graph2, 'Visible','on') set(handles.text_max_graph2, 'Visible','on') set(handles.slider_graph_para2,'Visible','on') set(handles.slider_graph_para2','SliderStep',[1 / (GD_Global.MaxK - GD_Global.MinK), 0.1]) case 4 %eps graph unweighted set(handles.slider_graph_para2, 'Min', GD_Global.MinEps, 'Max',GD_Global.MaxEps); set(handles.slider_graph_para2, 'Value', GD_Global.CurrentGraphPara2); %set after setting min/max set(handles.text_graph_para2,'String', ['Current eps: ', num2str(GD_Global.CurrentGraphPara2)]) set(handles.text_min_graph2,'String', num2str(GD_Global.MinEps)) set(handles.text_max_graph2,'String', num2str(GD_Global.MaxEps)) set(handles.text_min_graph2, 'Visible','on') set(handles.text_max_graph2, 'Visible','on') set(handles.slider_graph_para2,'Visible','on')end%disp('end init')% ------------------------------------------------------------function DrawDataAndPlot(handles)% ------------------------------------------------------------global GD_Global;% clear all the axescla(handles.axes_data_left)cla(handles.axes_data_middle)cla(handles.axes_data_right)cla(handles.axes_graph1_left)cla(handles.axes_graph1_middle)cla(handles.axes_graph1_right)cla(handles.axes_graph1_rr)cla(handles.axes_graph2_left)cla(handles.axes_graph2_middle)cla(handles.axes_graph2_right)cla(handles.axes_graph2_rr)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -