matlab中的周期结构

时间:2015-06-21 12:06:27

标签: arrays matlab matrix

我正在尝试创建一个脚本来解决我的问题,但我被困在一个地方。 所以我用4x1大小的矩阵导入了.txt文件(简化为一个例子,在我的例子中它可能是1209x1矩阵),它包含一些坐标X.它看起来像这样:

 0
 1
 2
 3

这是一个时期的坐标,我需要为不同数量的时段N得到一列。每个时期都相同,长度= L

因此,您可以通过此脚本手动执行此操作,例如N = 3个句点:

X=[X; X+L; X+2*L];

所以例如,如果L = 3

然后我会得到

0
1
2
3
3
4
5
6
6
7
8
9

它运作良好但是如果我需要使用多个句点来表示N = 1000或者我需要快速更改它们的数量,它效率不高。参数化这个操作的任何解决方案,所以我可以只为N设置数字并在N个时期内得到X?

谢谢和问候

2 个答案:

答案 0 :(得分:0)

我在这台机器上没有MATLAB,所以我无法测试,但最简单的实现方式如下:

n = 1000;
L = 3;
nvalues = length(X); % Assuming X is your initial vector

newx = zeros(n*nvalues, 1); % Preallocate new array
for ii = 0:(n-1)
   startidx = (nvalues*ii) + 1;
   endidx   = nvalues*(ii+1);

   newx(startidx:endidx) = X + ii*L
end

答案 1 :(得分:0)

您可以使用results2 <- data.frame(model1 = c("A", "A", "A", "B", "B", "B"), model2 = c("A", "B", "C", "C", "D", "E")) apply(results2, 2, chooseBestModel) ## model1 model2 ## "A" "C" 创建bsxfunXX+L,...然后将其重塑为矢量

X+2*L

或以更简洁的形式:

>> F=bsxfun(@plus, X, (0:(N-1))*L)
F =
     0     3     6
     1     4     7
     2     5     8
     3     6     9
>> X=F(:)
X =
     0
     1
     2
     3
     3
     4
     5
     6
     6
     7
     8
     9