matlab画出一条曲线后,作一条垂线,求与曲线交点的纵坐标。曲线是多值函数。
刚才在另一个问题(编号266293087015963285)回答,写了好半天,提交不成功又无法取消了复制文字(恶心的度娘),懒得再重新打字了,直接给答案吧,相信看注释差不多能看懂。
写了一段代码,供参考。
% 测试数据
y = 0:.1:5;
x = sin(y).*sin(2*y).*cos(3*y);
xi = -0.2; % 垂线坐标
% 绘图
cla
plot(x,y)
hold on
plot([xi xi], ylim, 'k--')
% 查找各段曲线拐点
inx = [0 find(diff(x(1:end-1)).*diff(x(2:end))<=0) length(x)-1];
N = length(inx) - 1;
% 对每段单调变化的曲线插值
yi = zeros(N,1);
for ii = 1 : N
Y = y(inx(ii)+1:inx(ii+1)+1);
X = x(inx(ii)+1:inx(ii+1)+1);
yi(ii) = interp1(X,Y,xi);
end
% 剔除重复(拐点可能重复)以及无效值(该段无交点)
yi = unique(yi(~isnan(yi)));
plot(xi,yi,'ro')
能加个企鹅么,还有些问题想问,我先采纳了