matlab:matlab_helpful_hacks
This is an old revision of the document!
Table of Contents
MATLAB helpful hacks
Index Non-Empty Cells in Cell Array
http://www.mathworks.com/matlabcentral/answers/42283-index-non-empty-cells-in-cell-array
x = {1,[],[],[]}; find(~cellfun(@isempty,x))
startup.m
When MATLAB starts, it will look for a pathdef.m file in its startup directory.
Start up folder (in the MATLAB icon | Properties | Start in ) (e.g. D:\Sources\MATLAB) allows controlling different paths and other settings via startup.m file placed in the folder, e.g.:
disp('Welcome to physiology analysis...'); set_sources_path; % set additional paths dynamically, e.g. % addpath(genpath('D:\Sources\MATLAB')); cd('F:\Data'); edit; EditorMacro('Alt-Control-h', @createHeaderComment_dag); dbstop if error
Exiting loop (for / while -> pause) gracefully
(i.e., without “ctrl-C” abort)
For example, when paging thru trials:
figure('Name','Plot trial','CurrentChar',' '); for k = 1:length(trial), ... drawnow; pause; if get(gcf,'CurrentChar')=='q', % pressing "q" will exist the loop, make sure focus is on the figure! break; end clf; end
Finding indices between two vectors of start and end indices
Assume we have two vectors, repeated_segments_start_idx, and repeated_segments_end_idx, and we want to find all indices between each pair.
idx = [repeated_segments_start_idx(segments2remove_idx):repeated_segments_end_idx(segments2remove_idx)] % DOES NOT WORK, OF COURSE! idx = cell2mat(arrayfun(@colon,repeated_segments_start_idx,repeated_segments_end_idx,'UniformOutput',false)); % WORKS!
matlab/matlab_helpful_hacks.1443810340.txt.gz · Last modified: 2022/12/29 07:15 (external edit)