26 views (last 30 days)
One of the joys of using MATLAB is that it has a stock of matrix functions like diff, sort, all, and so on, that can be combined in all sorts of interesting ways. For example, in a recent question, the challenge was to find a compact code to determine which columns of a matrix A have all elements equal. Matt Tearle came up with this nifty answer:
What are your favorite one-line MATLAB expressions?
Walter Roberson on 3 Mar 2011
cell2mat(arrayfun(@(K) accumarray(C, F(:,K), , @mean), 1:size(F,2), 'Uniform', 0))
In response to a cssm question:
I have a feature matrix, F(m, n) and a cluster vector, C(m, 1).
Now I want to get the mean of feature in F according to C. Make
it simple as below:
F = [2 5; 3 7; 8 4]
C = [2; 1; 2]
output should be [3 7; (2+8)/2 (5+4)/2]
=[3 7; 5 4.5]
More Answers (9)
I'm a huge fan of logical indexing. Expressions like
mean(frogs(wombats > 42))
rock my world.
Sean de Wolski on 3 Mar 2011
Here's another from a thread today:
Given a connected components analysis (bwconncomp) and some criteria for objects to meet: remove objects that don't meet that criteria from your binary image:
I(cell2mat(CC.PixelIdxList(~idx)')) = false;
Inspired by something I'm working on right now & your comment to my previous answer...
If you have an n-by-1 structure array people with a field suck (which contains a scalar for each struct element), and you want to find the average:
Extract multiple elements, concatenate, apply function. All in one line.
Oleg Komarov on 3 Mar 2011
eval('fliplr(['''' 33 33 33 33 33 76 105 118 69 32 109 39 73 ''''])')