sharing of numbers in the matrix
Show older comments
If
A=[0.1 0 0.2 0 0 0 0 0;0 0 0 0.3 0.4 0 0 0;0 0.5 0 0 0 0 0 0.6;0 0 0 0 0 0.7 0.8 0]
I want to have
B=[0.1 0 0.2 0.3 0.4 0 0 0;0.1 0 0.2 0.3 0.4 0 0 0;0 0.5 0 0 0 0 0.7 0.8 0.6;0 0.5 0 0 0 0 0.7 0.8 0.6]
could anyone tell me how to get it?
6 Comments
per isakson
on 15 Dec 2017
The rows of B don't have the same length.
Jos (10584)
on 15 Dec 2017
What is "sharing of numbers"?
Prabha Kumaresan
on 15 Dec 2017
Edited: Guillaume
on 15 Dec 2017
Jos (10584)
on 15 Dec 2017
What is the exact connection between A and B? Why, for instance, is B(2,2) 0 and not 0.5?
Prabha Kumaresan
on 15 Dec 2017
Jos (10584)
on 15 Dec 2017
I am completely lost ... Stephen and Andrei, the floor is yours
Answers (2)
Solution to your original question:
>> reshape(repmat(max(reshape(A,2,[])),2,1),size(A))
ans =
0.10000 0.00000 0.20000 0.30000 0.40000 0.00000 0.00000 0.00000
0.10000 0.00000 0.20000 0.30000 0.40000 0.00000 0.00000 0.00000
0.00000 0.50000 0.00000 0.00000 0.00000 0.70000 0.80000 0.60000
0.00000 0.50000 0.00000 0.00000 0.00000 0.70000 0.80000 0.60000
Solution to your later comment:
>> repmat(reshape(max(reshape(A,2,[])),2,[]),2,1)
ans =
0.10000 0.00000 0.20000 0.30000 0.40000 0.00000 0.00000 0.00000
0.00000 0.50000 0.00000 0.00000 0.00000 0.70000 0.80000 0.60000
0.10000 0.00000 0.20000 0.30000 0.40000 0.00000 0.00000 0.00000
0.00000 0.50000 0.00000 0.00000 0.00000 0.70000 0.80000 0.60000
1 Comment
Andrei Bobrov
on 15 Dec 2017
+1
Andrei Bobrov
on 15 Dec 2017
Edited: Andrei Bobrov
on 15 Dec 2017
out = repelem(squeeze(max(permute(reshape(A,2,2,[]),[1,3,2]))),1,2)';
or
out = A;
[ii,jj] = find(A);
t = rem(ii,2);
out(sub2ind(size(out),ii - ~t + t,jj)) = A(A>0);
3 Comments
Prabha Kumaresan
on 15 Dec 2017
Prabha Kumaresan
on 15 Dec 2017
Andrei Bobrov
on 15 Dec 2017
Edited: Andrei Bobrov
on 15 Dec 2017
See Stephen's answer (first part).
B = reshape(repmat(max(reshape(A,2,2,[]),[],2),1,2),size(A));
or
[ii,jj] = find(A);
B = A;
B(sub2ind(size(A),rem(ii + 1,4)+1,jj)) = A(A>0);
Categories
Find more on Matrix Indexing in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!