Asked by FIR
on 12 Jun 2012

I have a 30 matrix of size 256x256 stored in in different variables,

for ex the variables are A,D,R,T,Y,......ETC,EACH variable has same matrix size,now i want to find mean for each matrix and store it s mean values in a separate variable ,please help

*No products are associated with this question.*

Answer by the cyclist
on 12 Jun 2012

Accepted answer

It's pretty awkward if there is no pattern to the naming of the variables, so if you can fix the naming problem upstream, you should try to do that. If you can't, then one approach is to define a function that takes a variable number of arguments, and does the mean of each one:

function arrayOfMeans = getMeans(varargin)

arrayOfMeans = zeros(nargin,1); for n=1:nargin arrayOfMeans(n) = mean(varargin{n}(:)); % Calculating means of all elements in array end

end

Then call that function with the list of your variables as the input. For example,

>> getMeans(magic(3),rand(7),eye(4))

In your case, you would do

>> getMeans(A,D,R,T)

etc

Answer by Walter Roberson
on 12 Jun 2012

Answer by Andrei Bobrov
on 13 Jun 2012

a = whos; b = strcat({a(cellfun(@(x)isequal(x,[256 256]),{a.size})).name},','); AD_etc = eval(['{',[b{:}],'}']); AD_mean = cellfun(@(x)mean(x(:)),AD_etc,'un',0); out = cell2struct([AD_etc;AD_mean],{'data','mean'});

Opportunities for recent engineering grads.

## 0 Comments