pap*_*kin 7 matlab matrix repeat
我几乎是初学者,所以很可能以简单的方式做我想做的事.我有一个矩阵121x62,但我需要将它扩展到121x1488所以每列必须重复24次.例如,转换为:
2.2668 2.2667 2.2667 2.2666 2.2666 2.2666
2.2582 2.2582 2.2582 2.2582 2.2581 2.2581
2.283 2.283 2.283 2.2829 2.2829 2.2829
2.2881 2.2881 2.2881 2.2881 2.2881 2.288
2.268 2.268 2.2679 2.2679 2.2678 2.2678
2.2742 2.2742 2.2741 2.2741 2.2741 2.274
Run Code Online (Sandbox Code Playgroud)
进入这个:
2.2668 2.2668 2.2668 and so on to 24th 2.2667 2.2667 and again to 24x
2.2582 2.2582 2.2582 ...
Run Code Online (Sandbox Code Playgroud)
每一列.
我试图用这些值创建一个向量,然后用vec2mat转换,好吧我有121x1488矩阵但是按行重复:
2.2668 2.2668 2.2668 2.2668 2.2668 2.2668 ... 2.2582 2.2582 2.2582 2.2582 ...
Run Code Online (Sandbox Code Playgroud)
怎么做列?
Ole*_*leg 22
假设您有这个简化的输入,并且您希望按顺序按n时间扩展列:
A = [1 4
2 5
3 6];
szA = size(A);
n = 3;
Run Code Online (Sandbox Code Playgroud)
有几种方法可以做到这一点:
复制,然后重塑:
reshape(repmat(A,n,1),szA(1),n*szA(2))
Run Code Online (Sandbox Code Playgroud)Kronecker产品:
kron(A,ones(1,n))
Run Code Online (Sandbox Code Playgroud)使用FEXexpand() ::
expand(A,[1 n])
Run Code Online (Sandbox Code Playgroud)自R2015a起,repelem():
repelem(A,1,n)
Run Code Online (Sandbox Code Playgroud)所有产生相同的结果:
ans =
1 1 1 4 4 4
2 2 2 5 5 5
3 3 3 6 6 6
Run Code Online (Sandbox Code Playgroud)
干得好:
function [result] = repcolumn(A, n)
%n - how many times each column from A should be repeated
[rows columns] = size(A);
result = repmat(A(:,1),1,n);
for i = 2:columns
result = [result,repmat(A(:,i),1,n)];
end
end
Run Code Online (Sandbox Code Playgroud)
一定有一种更简单的方法,但它可以完成工作。
| 归档时间: |
|
| 查看次数: |
11463 次 |
| 最近记录: |