相关疑难解决方法(0)

与Mat的R代表类似的函数

我正在寻找一个rep与Matlab中R函数类似的函数.例如,rep我可以执行以下操作:

> rep(c(1,2,3),times=3)
[1] 1 2 3 1 2 3 1 2 3

> rep(c(1,2,3),each=3)
[1] 1 1 1 2 2 2 3 3 3
> 
Run Code Online (Sandbox Code Playgroud)

在matlab中有repmat函数,它完成了第一部分

>> repmat([1,2,3],1,3)

ans =

     1     2     3     1     2     3     1     2     3
Run Code Online (Sandbox Code Playgroud)

但不是第二部分(或者至少我不明白该怎么做).

有什么建议?

matlab r

20
推荐指数
3
解决办法
2万
查看次数

重复数组元素的副本:在MATLAB中运行长度解码

我正在尝试使用'values'数组和'counter'数组将多个值插入到数组中.例如,如果:

a=[1,3,2,5]
b=[2,2,1,3]
Run Code Online (Sandbox Code Playgroud)

我想要一些功能的输出

c=somefunction(a,b)
Run Code Online (Sandbox Code Playgroud)

成为

c=[1,1,3,3,2,5,5,5]
Run Code Online (Sandbox Code Playgroud)

其中a(1)重复b(1)次,a(2)重复b(2)次等等...

MATLAB中是否有内置函数来执行此操作?如果可能的话,我想避免使用for循环.我尝试过'repmat()'和'kron()'的变体无济于事.

这基本上是Run-length encoding.

arrays matlab vectorization repeat run-length-encoding

16
推荐指数
4
解决办法
4099
查看次数

根据计数的元素数组复制

我的问题是与此类似一个,但我想根据在相同尺寸的第二阵列指定的计数复制每个元素.

这方面的一个例子,比如我有一个数组v = [3 1 9 4],我想用它rep = [2 3 1 5]来复制第一个元素2次,第二次复制,依此类推[3 3 1 1 1 9 4 4 4 4 4].

到目前为止,我正在使用一个简单的循环来完成工作.这就是我的开始:

vv = [];
for i=1:numel(v)
    vv = [vv repmat(v(i),1,rep(i))];
end
Run Code Online (Sandbox Code Playgroud)

我设法通过预先分配空间来改进:

vv = zeros(1,sum(rep));
c = cumsum([1 rep]);
for i=1:numel(v)
    vv(c(i):c(i)+rep(i)-1) = repmat(v(i),1,rep(i));
end
Run Code Online (Sandbox Code Playgroud)

但是我仍然觉得必须有一个更聪明的方法来做到这一点......谢谢

arrays matlab repeat run-length-encoding elementwise-operations

8
推荐指数
1
解决办法
2926
查看次数

Matlab:按顺序重复每一列n次

我几乎是初学者,所以很可能以简单的方式做我想做的事.我有一个矩阵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)

怎么做列?

matlab matrix repeat

7
推荐指数
2
解决办法
1万
查看次数

如何在MATLAB中将2X2矩阵转换为4X4矩阵?

我需要一些帮助,以下列方式将2X2矩阵转换为4X4矩阵:

A = [2 6;
     8 4]
Run Code Online (Sandbox Code Playgroud)

应成为:

B = [2 2 6 6;
     2 2 6 6;
     8 8 4 4;
     8 8 4 4]
Run Code Online (Sandbox Code Playgroud)

我该怎么做?

matlab tiling matrix repeat

4
推荐指数
3
解决办法
7999
查看次数

交错的repmat

可能重复:
Matlab中的元素阵列复制

我有一个m x 1矢量,我想重复n一次创建一个(m*n)x1矢量.如果我使用repmat,我会得到类似的东西

>> V = [a;b;c];
>> repmat(V,2,1) % n = 2, m = 3
a
b
c
a
b
c
Run Code Online (Sandbox Code Playgroud)

什么是获得向量的单行(并且希望是快速)方式

[a;a;a;b;b;b;c;c;c]
Run Code Online (Sandbox Code Playgroud)

任意nm

matlab

2
推荐指数
1
解决办法
792
查看次数