Run function for paired data?
4 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Fred John
am 28 Jan. 2015
Kommentiert: Geoff Hayes
am 30 Jan. 2015
Hi,
Let's say I have a 10x10 matrix A. I wish to run each unique pair of elements from that matrix (e.g. (1,1),(1,2),...,(1,10) - not to repeat (2,1) for instance) in a function that I have. Any ideas how this can be possible?
Thanks!
0 Kommentare
Akzeptierte Antwort
Geoff Hayes
am 28 Jan. 2015
Fred - if you just want to loop over each unique pair of elements in the matrix, then consider doing something like
% assume A is 2D
[r,c] = size(A);
for m=1:r
for n=m:c
% do something with pair (m,n)
end
end
Try the above and see what happens!
2 Kommentare
Geoff Hayes
am 30 Jan. 2015
Yes, if you assume that the matrix is square and you want loop over each pair (and not the unique ones) then you can do as above (though use c for the number of columns for the case where your matrix is not square). And yes, you can write your output matrix as described above (consider pre-sizing it since you know the dimensions).
Weitere Antworten (1)
Guillaume
am 28 Jan. 2015
To get your pair indices:
maxpair = 10; %? a 10x10 matrix has 100 elements.
indices = [repmat([1:maxpair]', 1, 2); nchoosek(1:maxpair, 2)]
You can then use each row of indices as indices into your matrix:
m = randi(1000, 10, 10); %for example
maxpair = numel(m);
indices = [repmat([1:maxpair]', 1, 2); nchoosek(1:maxpair, 2)];
pairs = cellfun(@(row) m(row), num2cell(indices, 2), 'UniformOutput', false) %is this what you want?
0 Kommentare
Siehe auch
Kategorien
Mehr zu Creating and Concatenating Matrices finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!