Replace a value with matrix n x m
Show older comments
Hii.... I want to ask how to replace a value with a matrix n x m. Ex: a = (perms[2])', if a(1)=1, replace a(1)with [1 1;1 1], if a(1)=2, replace it with [2 2;2 2].
Thank you
Muammar
Accepted Answer
More Answers (2)
Sean de Wolski
on 5 Dec 2011
Maybe:
data1 = ones(2);
data2 = magic(2);
D = [data1;data2];
D2 = reshape(flipdim(reshape(D',size(data1,1),size(data1,2),[]),3),size(D))
?
9 Comments
Muammar
on 5 Dec 2011
Walter Roberson
on 5 Dec 2011
Sorry, I do not understand what you are trying to say here. The part that I do understand has no obvious connection to replacing the 1x1 entry at A(1) with the 2x2 entry [1,1;1,1] or [2,2;2,2] that you were asking about ?
Sean de Wolski
on 5 Dec 2011
Walter, I think he wants the result to be the switch the concatention order of data1,data2, though it's very unclear.
Muammar
on 5 Dec 2011
Muammar
on 5 Dec 2011
Image Analyst
on 5 Dec 2011
Huh? You didn't change A at all. It's still [data1;data2] which is [1 1;4 4] - no change at all. And what is supposed to be a 1x1 matrix?
Walter Roberson
on 5 Dec 2011
A=[1 1;4 4] is not a 1 x 1 matrix: it is a 2 x 2 matrix. The only way to make a 1 x 1 matrix as a result would be to use
A = {[1 1;4 4]};
which would create a 1 x 1 cell array.
Muammar
on 5 Dec 2011
Muammar
on 5 Dec 2011
Image Analyst
on 5 Dec 2011
I agree with the others - unclear. Perhaps you mean this:
m = randi(9, [1 4]) % Sample row vector with random integers
m2 = imresize(m, 2, 'nearest') % Do the replication.
Results:
m =
7 8 2 5
m2 =
7 7 8 8 2 2 5 5
7 7 8 8 2 2 5 5
So maybe you can just simply use imresize to get what you want.
Categories
Find more on Descriptive Statistics 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!