在MATLAB中创建步长递增的自定义起止非线性间隔向量
在MATLAB中创建步长逐步递增的自定义首尾向量
你需要的是首尾固定、相邻元素步长逐步递增的向量,logspace是对数比例增长,确实不符合需求,这里给你两种实用的实现方法:
方法一:手动控制步长递增规律
这种方法适合你明确知道初始步长和步长增量的场景,能精准控制每一步的步长变化,最后确保向量包含指定的终值:
start_val = 2; % 自定义初始值 end_val = 20; % 自定义最终值 initial_step = 1; % 初始步长 step_increment = 0.5; % 每次步长的增加量 vec = start_val; current_step = initial_step; next_val = start_val + current_step; % 循环添加元素,直到下一个值接近终值 while next_val < end_val vec = [vec, next_val]; current_step = current_step + step_increment; next_val = vec(end) + current_step; end % 强制把最后一个元素设为指定终值,保证首尾符合要求 vec(end+1) = end_val;
运行后vec的步长会从1开始,每次增加0.5,最后以终值20收尾。
方法二:用参数化函数生成递增步长
如果不需要精确控制每一步的步长,只需要步长整体递增,且能指定向量总点数,用多项式映射的方法更简洁:
start_val = 2; end_val = 20; num_points = 8; % 自定义向量的总点数(包含首尾) % 生成0到1的线性分布点 t = linspace(0, 1, num_points); % 用二次函数映射,实现步长从缓到快的递增 vec = start_val + (end_val - start_val) * t.^2;
这里t.^2会让向量的元素间距逐步变大(步长递增),如果想要步长递增更快,可以换成t.^3甚至更高次幂;如果需要步长递增更平缓,也可以调整成t.^1.5这类分数次幂。
内容的提问来源于stack exchange,提问作者Abde
相关产品推荐
相关产品推荐

