我正在尝试使用'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.
例如,我有5个时间步和一个持续时间值:
TimeSteps = [4, 5, 6, 7, 8, 10, 11, 12, 14, 15, 16];
Duration = [5, 3, 3];
Run Code Online (Sandbox Code Playgroud)
我想自动生成每个持续时间的时间步长之间的平均值.在这种情况下,结果将如下所示:
Result = [mean([4, 5, 6, 7, 8]), mean([10, 11, 12]), mean([14, 15, 16])];
Run Code Online (Sandbox Code Playgroud)
这将导致:
Result = [6, 11, 15];
Run Code Online (Sandbox Code Playgroud)
我有一个474x1的持续时间向量,所以我需要自动化这个.如果有人可以提供帮助,那就太好了.谢谢.
给定两个向量X和Y长度n,表示平面上的点和邻域半径rad,是否有一种矢量化方法来计算点的邻域矩阵?
换句话说,可以对以下(对于大的痛苦缓慢n)循环进行矢量化:
neighborhood_mat = zeros(n, n);
for i = 1 : n
for j = 1 : i - 1
dist = norm([X(j) - X(i), Y(j) - Y(i)]);
if (dist < radius)
neighborhood_mat(i, j) = 1;
neighborhood_mat(j, i) = 1;
end
end
end
Run Code Online (Sandbox Code Playgroud) 我有一个freq频率数组和另一个val有值的数组.
val =[1 3 5 7];
freq=[2 3 3 2];
Run Code Online (Sandbox Code Playgroud)
我想得到阵列result.
result=[1 1 3 3 3 5 5 5 7 7];
Run Code Online (Sandbox Code Playgroud)
我试图获得的方法之一result是:
freq=[2 3 3 2];
val=[1 3 5 7];
result=[];
for i=1:length(val);
result=[result repmat(val(i),1,freq(i))];
end
Run Code Online (Sandbox Code Playgroud)
它可以工作,但是对于大型阵列,如果我摆脱for-loop,我希望获得一些性能提升.这有什么内置功能吗?你会如何计算result大型阵列?