matlab未定义str,已经定义了变量却报错“未定义函数或变量”

本文介绍了一段使用MATLAB进行数据处理和绘图的代码示例,其中包括了如何绘制通过各点连线形成的图形,并进一步寻找图形中的最高点及进行特定条件下的直线绘制。涉及了数据读取、绘图、条件判断等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

x=str2num(get(handles.edit1,'string'));

y=str2num(get(handles.edit2,'string'));

axes(handles.axes1)

n=length(x);

%各点依次连线

for h=2:n

plot([x(h-1),x(h)],[y(h-1),y(h)]);

end

%求出最高点

a1=(y(n)-y(1))/(x(n)-x(1));

b1=y(1)-a1*x(1);

y1=a1*x+b1;

for h=1:n

d1(h)=abs(a1*x(h)-y(h)+b1)/sqrt(a1.^2+1);

end

D=max(d1);

for h=1:n

if d1(h)==D

X=h;

end

end

Y=y(X);

%求过最高点与它不相邻的各点连线的曲线

for k=1:n

if k~=X&&k~=X-1&&k~=X+1

a=(Y-y(k))/(x(X)-x(k));

b=Y-a*x(X);

Y1=a*x+b;

%判断各点是否为该直线所包容,是则绘出该包容线

for l=1:n

if Y1(l)>=y(l)

count=1;

continue;

else

count=0;

break;

end

end

if count==1

%求出个测点到该直线的距离

for l=1:n

d(l)=abs(a*x(l)-y(l)+b)/sqrt(a.^2+1);

end

%求出最大距离

D1=max(d);

%求出最大距离点的x值,并赋予m

for l=1:n

if d(l)==D1

m=l;

end

end

%求m点投影到直线Y1=a*x+b上的x坐标,并赋予值q

q=(Y1(m)+x(m)/a)/(a+1/a);

%判断最大距离的点的位置是否在所连直线的两个点之间,即是否符合“高低高”准则

if (q>k&&qX&&q

c=y(m)-a*x(m);

Y2=a*x+c;

plot(x,Y1,'r');

plot(x,Y2,'r');

num=num+1;

j(num)=b-c;

end

end

end

end

l1=min(j);

set(handles.text5,'string',l1);

结尾的一个循环里定义了j,但是最后把j的最小值赋给l1却显示j未定义,报错结果如图

2017-4-29 09:01 上传

442a53943febe9465fc072b4fbe10813.gif

b2a5a3e0dcc7d508e00275fe42fce1b5.gif

f8dc87632d46cc505c7bc48401944c3b.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值