Azzera filtri
Azzera filtri

Compare matrices built with repelem and repmat

13 visualizzazioni (ultimi 30 giorni)
I have an array a of size ZxW.
Z = 20;
W = 30;
A = 40; %will be used below
size(a)
20 30
Then I apply to a two different transformations, and then after those I delete a and I cannot go back to it.
First transformation:
b = repelem(a(:,1),A,A);
Second transformation:
c = repmat(a,[1,1,A,A]);
d = c(:,1,:,:);
After those transformation and deleting a (which cannot be used for the following), I want to compare d and b using
assert( isequal(b,f) )
Where f is a transformation of d that makes the assertion true.
My first idea was a simple reshape:
f = reshape(squeeze(d),[Z*A,A]);
Which does not work as repelem and repmat move entries differently. How can I do this?
Thanks for the attention.
Sincerely
Luca
  2 Commenti
Jan
Jan il 5 Ago 2017
What is the difference to your question https://www.mathworks.com/matlabcentral/answers/351565-from-kron-to-repmat-and-reshape? Please do not post two question for one problem, but edit the original question and answer questions for clarifications. Thanks.
Luca Gagliardone
Luca Gagliardone il 5 Ago 2017
The original question in your link was not well posed and your answer was perfect for the question.
I thought it could have been a good idea for clarity to pose a different question, but you are right, I probably should have edited. Sorry for that, I will reply at your link. Thanks.

Accedi per commentare.

Risposta accettata

Jan
Jan il 5 Ago 2017
Modificato: Jan il 5 Ago 2017
The transformation
c = repmat(a, [1,1,A,A]);
d = c(:,1,:,:);
is an indirection to reproduce b.
Z = 2;
W = 3;
A = 4; % Smaller to check the output manually
a = rand(Z, W);
b = repelem(a(:,1),A,A);
c = reshape(repmat(a(:,1).', [A, A]), Z*A, A);
isequal(b, c)
But if you really want
c = repmat(a, [1,1,A,A]);
d = c(:,1,:,:);
Then:
f = reshape(permute(d, [3,1,4,2]), [Z*A,A]);
isequal(b, f) % 1: equal

Più risposte (0)

Categorie

Scopri di più su Matrices and Arrays in Help Center e File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by