linspace
написан в Matlab (т. Е. Это не встроенная функция). Вы можете легко изменить его код, чтобы не генерировать последний элемент, и сохранить его как другую функцию.
Фактически, если вы видите код linspace
, вы заметите, что последний элемент должен быть добавлен специально. Таким образом, ваша догадка была правильной: это более «естественный», чтобы не включать последний элемент.
В приведенном ниже коде я включаю измененные три строки и оригинальные для сравнения.
function y = linspace2(d1, d2, n)
if nargin == 2
n = 100;
end
n = double(n+1); %// modified line
%// Originally: n = double(n);
n1 = floor(n)-1;
vec = 0:n-2;
if isinf(d2 - d1)
y = d1 + (d2/n1).*vec - (d1/n1).*vec; %// modified line
%// Originally: y = [d1 + (d2/n1).*vec - (d1/n1).*vec, d2];
else
y = d1 + (vec.*(d2-d1)/n1); %// modified line
%// Originally: y = [d1 + (vec.*(d2-d1)/n1), d2];
end
Я думаю, что вы преуспеваете, это путь. Если вы очень хотите, вы можете использовать однострочное linspace: 'angles = linspace (0,2 * pi- (2 * pi/n), n)' – Adiel
Что не так с углами = linspace (0,2 * pi , п)? Или вы хотите n углов, включая 0, но не включая 2 * pi? В этом случае решение вашей двух линий (% ненужной линии) может быть оптимальным. –
Я на самом деле думаю, что то, что вы наделили «намерение непонятным», является самым ясным из всех этих (для любого, у кого есть опыт работы с Matlab). Остальные откровенно кажутся немного странными. – horchler