如何在MATLAB中从Vector中获取等距条目,例如:我有以下向量:
0 25 50 75 100 125 150
当我选择2
时,我希望得到:
0 150
当我选择3
时,我希望得到:
0 75 150
当我选择4
时,我希望得到:
0 50 100 150
选择1
,5
或6
不应该有效,我甚至需要检查if
- 条款,但我无法弄清楚这一点。
答案 0 :(得分:5)
您可以使用linspace
和round
生成索引:
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-1
除length(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