【发布时间】:2021-11-14 21:46:24
【问题描述】:
我正在尝试使用 Beizer 曲线通过数据点找到平滑曲线。
我有以下循环计算贝泽曲线的二项式系数:
for i = 1:n; // Here 'n' is total number of Control Points.
a(i) = (factorial(n-1))/(factorial(i-1)*(factorial(n-i)));
end
你会如何在 Matlab 中“矢量化”这段代码?
如果我执行以下操作...我会收到错误消息。
i = 1:n;
a(i) = (factorial(n-1))/(factorial(i-1)*(factorial(n-i)));
我的另一个问题是......如果我有嵌套循环,你将如何“矢量化”它?
例如:要找到 Beizer 曲线的所有其他点...我有以下代码:
for j=2:c-1
x=0;
y=0;
for i=1:n
kx(i)=a(i)*t(j).^(i-1)*(1-t(j)).^(n-i)*px(i);
ky(i)=a(i)*t(j).^(i-1)*(1-t(j)).^(n-i)*py(i);
x=x+kx(i);
y=y+ky(i);
end
bx(j)=x;
by(j)=y;
end
【问题讨论】:
-
“我遇到错误”如果您复制粘贴实际的错误消息会更有帮助。我猜您需要将
/替换为./(元素除法)才能使其正常工作,但这取决于您收到的实际错误消息。
标签: matlab vectorization