好的,这就是我在Matlab中从矩阵A形成矩阵A1的过程
x=1:10;
x=x';
A=toeplitz(x,[x(1);flip(x(2:end))]);
A1=zeros(10,5);
count=0;
for i=1:2:10
count=count+1;
A1(:,count)=A(:,i);
end
输出如下所示
>> A
A =
1 10 9 8 7 6 5 4 3 2
2 1 10 9 8 7 6 5 4 3
3 2 1 10 9 8 7 6 5 4
4 3 2 1 10 9 8 7 6 5
5 4 3 2 1 10 9 8 7 6
6 5 4 3 2 1 10 9 8 7
7 6 5 4 3 2 1 10 9 8
8 7 6 5 4 3 2 1 10 9
9 8 7 6 5 4 3 2 1 10
10 9 8 7 6 5 4 3 2 1
>> A1
A1 =
1 9 7 5 3
2 10 8 6 4
3 1 9 7 5
4 2 10 8 6
5 3 1 9 7
6 4 2 10 8
7 5 3 1 9
8 6 4 2 10
9 7 5 3 1
10 8 6 4 2
我想要在r中使用相同的逻辑(我只显示了与for循环相关的代码,而其他事情,即初始赋值与上面提到的Matlab代码相同),我尝试在r中执行以下操作,但它显示了错误。我是r编程的初学者,需要帮助将矩阵A的列分配给矩阵A1(空矩阵)的其他列。
for(i in seq(from=1, to=10, by=2)){
count=count+1
A1[c(1:10),(1:count)]=A[C(1:10),(1:i)]
}
Error in C(1:10): object not interpretable as a factor
在结果矩阵中,我不想选择原始矩阵的奇数或偶数列。但是矩阵A1和矩阵A的第一列应该相同,而我可以通过更改步长大小来选择矩阵A1的其余列,如下面的Matlab代码
所示 A1 = A(:,1:3:10);
>> A1
A1 =
1 8 5 2
2 9 6 3
3 10 7 4
4 1 8 5
5 2 9 6
6 3 10 7
7 4 1 8
8 5 2 9
9 6 3 10
10 7 4 1
A1 = A(:,1:4:10);
>> A1
A1 =
1 7 3
2 8 4
3 9 5
4 10 6
5 1 7
6 2 8
7 3 9
8 4 10
9 5 1
10 6 2