MATLAB 中有这个功能吗?
Is there a function for this in MATLAB?
考虑以下示例,对于用户指定的奇数 N = 5
,应该会看到以下输出:
A = [1 4 2 5 3];
对于N = 7
: A = [1 5 2 6 3 7 4];
奇数的更一般形式 N
:
A = [1 ceil(N/2+1) 2 ceil(N/2+2) ... N ceil(N/2)];
我是这样解决问题的
A = zeros(1, N);
a1 = 1:ceil(N/2): a2 = ceil(N/2+1):N;
j = 1; k = 1;
for i = 1:N
if rem(i, 2) ~= 0
A(i) = a1(j);
j = j+1;
else
A(i) = a2(k);
k = k+1;
end
end
我觉得有更好的方法来编码问题、优化和简单性。如果您能指导我实现我所寻求的目标,我将不胜感激。
一个线性解:
A([1:2:N, 2:2:N]) = 1:N;
可以看作是这些索引操作的组合:
A(1:2:N) = 1:(N+1)/2;
A(2:2:N) = (N+3)/2:N;
考虑以下示例,对于用户指定的奇数 N = 5
,应该会看到以下输出:
A = [1 4 2 5 3];
对于N = 7
: A = [1 5 2 6 3 7 4];
奇数的更一般形式 N
:
A = [1 ceil(N/2+1) 2 ceil(N/2+2) ... N ceil(N/2)];
我是这样解决问题的
A = zeros(1, N);
a1 = 1:ceil(N/2): a2 = ceil(N/2+1):N;
j = 1; k = 1;
for i = 1:N
if rem(i, 2) ~= 0
A(i) = a1(j);
j = j+1;
else
A(i) = a2(k);
k = k+1;
end
end
我觉得有更好的方法来编码问题、优化和简单性。如果您能指导我实现我所寻求的目标,我将不胜感激。
一个线性解:
A([1:2:N, 2:2:N]) = 1:N;
可以看作是这些索引操作的组合:
A(1:2:N) = 1:(N+1)/2;
A(2:2:N) = (N+3)/2:N;