MATLAB:获得Vector的等距条目

时间:2013-11-24 16:15:55

标签: matlab vector distance space

如何在MATLAB中从Vector中获取等距条目,例如:我有以下向量:

 0    25    50    75   100   125   150

当我选择2时,我希望得到:

0   150

当我选择3时,我希望得到:

0   75   150

当我选择4时,我希望得到:

0   50   100   150

选择156不应该有效,我甚至需要检查if - 条款,但我无法弄清楚这一点。

2 个答案:

答案 0 :(得分:5)

您可以使用linspaceround生成索引:

vector = [0    25    50    75   100   125   150]; % // data
n = 4; % // desired number of equally spaced entries

ind = round(linspace(1,length(vector),n)); %// get rounded equally spaced indices
result = vector(ind) % // apply indices to the data vector

如果您想强制n的值1,5或6不起作用:请测试n-1length(vector)-1)。如果您这样做,则不需要round来获取索引:

if rem((length(vector)-1)/(n-1), 1) ~= 0
    error('Value of n not allowed')
end
ind = linspace(1,length(vector),n); %// get equally spaced indices
result = vector(ind) % // apply indices to the data vector

答案 1 :(得分:3)

使用linspace

>> a
a =

     0    25    50    75   100   125   150

>> a(linspace(1,length(a),4))
ans =

     0    50   100   150

>> a(linspace(1,length(a),3))
ans =

     0    75   150

>> a(linspace(1,length(a),2))
ans =

     0   150

请注意,除1外,无效值会引发错误:

>> a(linspace(1,length(a),5))
error: subscript indices must be either positive integers or logicals
>> a(linspace(1,length(a),6))
error: subscript indices must be either positive integers or logicals