我有一个大小为ZxW的数组。
Z = 20;
W = 30;
A = 40; %will be used below
size(a)
20 30
然后我申请了两个不同的转换,然后我删除了一个,我不能回到它。
第一次转型:
b = repelem(a(:,1),A,A);
第二次转型:
c = repmat(a,[1,1,A,A]);
d = c(:,1,:,:);
在那些转换并删除a(不能用于以下内容)之后,我想使用
比较d和bassert( isequal(b,f) )
其中f是d的变换,使断言成立。
我的第一个想法是一个简单的重塑:
f = reshape(squeeze(d),[Z*A,A]);
哪个不起作用repelem和repmat以不同的方式移动条目。我怎么能这样做?
感谢您的关注。
此致
卢卡
编辑:已更改
c = repmat(a,[A,A]);
带
c = repmat(a,[1,1,A,A]);
答案 0 :(得分:1)
答案(Jan Simon):
f = reshape(permute(d, [3,1,4,2]), [Z*A,A]);
isequal(b, f) % 1: equal
感谢您的帮助。
卢卡
答案 1 :(得分:0)
Look closely at what the pattern of b
and d
are:
b = [1 1 1 2 2 2 3 3 3].'
d = [1 2 3 1 2 3 1 2 3].'
f
can be:f = reshape(d, [A, A]).'
f = f(:)
This will convert d
to be exactly b
or vice versa.