具有匿名函数的 Linspace 跳过每个第二个值
Linspace with anonymous function skipping every second value
我有一个非常简单的问题,但无法完成。
我想在匿名函数的两个值之间生成一个 linspaced 序列。如果我用值来做它没问题并且看起来像这样
n = 5;
left = 1;
right = 3;
y = zeros(n, 1);
x = linspace(left, right, n)';
q = zeros(2*n, 1);
q(1:2:end) = x
q(2:2:end) = y
但是匿名函数作为边界是不可能的。我的尝试看起来像这样,但我真的很感激更好的解决方案
n = 5;
left = @(t) 0.5 * t;
right = @(t) 2 * t^2 + 5;
diff = @(t) right(t) - left(t);
q = @(t) [];
for i = 1:n
q = @(t) [q(t) i*diff(t)/n 0*t];
end
q(0.5)
希望你能帮助我,在此先感谢!
感谢@Adiel 我做出了以下回答
function [Q] = reference_configuration(left, right, n, t)
l = left(t);
r = right(t);
diff = r - l;
x = linspace(0, diff, n);
y = zeros(1, n);
q = zeros(1, 2*n);
q(1:2:end) = x;
q(2:2:end) = y;
end
也许它对某人有帮助。谢谢!
我有一个非常简单的问题,但无法完成。
我想在匿名函数的两个值之间生成一个 linspaced 序列。如果我用值来做它没问题并且看起来像这样
n = 5;
left = 1;
right = 3;
y = zeros(n, 1);
x = linspace(left, right, n)';
q = zeros(2*n, 1);
q(1:2:end) = x
q(2:2:end) = y
但是匿名函数作为边界是不可能的。我的尝试看起来像这样,但我真的很感激更好的解决方案
n = 5;
left = @(t) 0.5 * t;
right = @(t) 2 * t^2 + 5;
diff = @(t) right(t) - left(t);
q = @(t) [];
for i = 1:n
q = @(t) [q(t) i*diff(t)/n 0*t];
end
q(0.5)
希望你能帮助我,在此先感谢!
感谢@Adiel 我做出了以下回答
function [Q] = reference_configuration(left, right, n, t)
l = left(t);
r = right(t);
diff = r - l;
x = linspace(0, diff, n);
y = zeros(1, n);
q = zeros(1, 2*n);
q(1:2:end) = x;
q(2:2:end) = y;
end
也许它对某人有帮助。谢谢!