Matlab 如何在长度为N的数组中优雅地确定给定距离M的中心间隔?

Matlab 如何在长度为N的数组中优雅地确定给定距离M的中心间隔?,matlab,Matlab,我有一个数组x=1:N。我想可视化由x确定的曲线的中心部分,只说部分xx=N/2-M/2:N/2+M/2。我知道如果我舍入所有内容(N和M可以是任何内容),我可以做到这一点,但这使得一个简单的索引操作非常冗长且不可读。有更优雅的方法吗?调整你的思维,用“半径”(称之为m)而不是“直径”(m)来表达间隔的大小,瞧 xx = median(x)-m:median(x)+m 那更优雅,不是吗!因为你可能到处都需要整数,试试吧 xx = floor(median(x)-m):ceil(median(x

我有一个数组
x=1:N
。我想可视化由
x
确定的曲线的中心部分,只说部分
xx=N/2-M/2:N/2+M/2
。我知道如果我舍入所有内容(N和M可以是任何内容),我可以做到这一点,但这使得一个简单的索引操作非常冗长且不可读。有更优雅的方法吗?

调整你的思维,用“半径”(称之为
m
)而不是“直径”(
m
)来表达间隔的大小,瞧

xx = median(x)-m:median(x)+m
那更优雅,不是吗!因为你可能到处都需要整数,试试吧

xx = floor(median(x)-m):ceil(median(x)+m)

调整你的思维,用“半径”(称之为
m
)而不是“直径”(
m
)来表达间隔的大小,瞧

xx = median(x)-m:median(x)+m
那更优雅,不是吗!因为你可能到处都需要整数,试试吧

xx = floor(median(x)-m):ceil(median(x)+m)

MATLAB隐式地对整数类型进行舍入,因此您可以简单地将
M
N
转换为整数:

N = uint32(N);
M = uint32(M);
xx = N/2-M/2:N/2+M/2;

MATLAB隐式地对整数类型进行舍入,因此您可以简单地将
M
N
转换为整数:

N = uint32(N);
M = uint32(M);
xx = N/2-M/2:N/2+M/2;

你有没有找到其他的方法?我很好奇。不,下面的解决方案几乎是我见过的最短的。你有没有找到其他方法?我很好奇。不,下面的答案几乎是我见过的最短的。