matlab max报错,奇怪的报错。未定义'*'

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

clear all;

%求贝塞尔函数零点

maxv = 2;

maxs =44;

MAXS =100;

j= zeros(maxv, MAXS);

incr =4;

for v=0:maxv-1

if (v==0)

j(v+1,1) = fzero(@(x)besselj(v,x),2);

else

j(v+1,1) = fzero(@(x)besselj(v,x),3.8);

end

for s=2:maxs

j(v+1,s) = fzero(@(x)besselj(v,x),j(v+1,s-1)+incr);

end

end

for p=maxs+1:MAXS

j(1,p)=j(1,maxs)+pi*(p-maxs);

j(2,p)=j(2,maxs)+pi*(p-maxs);

end

T0 = 22;

k=17;%导热系数w/cm*k

r=0;%求解位置

t=1;%求解时间

b=0.5;%材料半径cm

a=0.025;%激光光斑半径cm

A=11.9;%材料热扩散率

d=1 ;%吸收率

h=0.01;%材料厚度cm

%画网格

Q=0.01;%间隔

xx=-0.3:Q:0.3;

yy1=sqrt(0.09-xx.^2)+0.275;

yy2=-sqrt(0.09-xx.^2)+0.275;

size1 = int8(0.6/Q+1);

TT1= zeros(1,size1);

%存储不同功率下的温度差

PP=0.1:0.1:3;

ANSWER_P=zeros(1,30);

TT1_P = zeros(1,30);

TT2_P = zeros(1,30);

for P = 1:30%改变功率

I0=153*PP(P)%功率密度w/cm^2

for N=1:0.6/Q+1

r=sqrt(yy1(N)^2+xx(N)^2);

T=0;

for m=1:MAXS

B=j(2,m);

T=T+besselj(0,B*r)*besselj(1,B*a)*(1-exp(-A*B^2*t))/(B^3*besselj(0,B*b)^2);

if m==MAXS

TT1(1,N)=(T*2*a+a^2*A*t)*d*I0/(k*h*b^2);

end

end

end

TT2= zeros(1,size1);

for N=1:0.6/Q+1

r=sqrt(yy2(N)^2+xx(N)^2);

T=0;

for m=1:MAXS

B=j(2,m);

T=T+besselj(0,B*r)*besselj(1,B*a)*(1-exp(-A*B^2*t))/(B^3*besselj(0,B*b)^2);

if m==MAXS

TT2(1,N)=(T*2*a+a^2*A*t)*d*I0/(k*h*b^2);

end

end

end

h=plot(xx,TT1,'',xx,TT2,''); %绘图

hold on

xlabel('x/cm');

ylabel('T/℃');

title('边缘温度');

legend('cold','hot');

set(h,'LineSmoothing','on'); %设置曲线为光滑

TT1_P(P)=sum(TT1)/(0.6/Q+1);

TT2_P(P)=sum(TT2)/(0.6/Q+1);

ANSWER_P(P)=TT2_P(P)-TT1_P(P);

end

plot(PP,ANSWER_P)

%{

[xx,yy]=meshgrid(x,y);

zz=sqrt(xx.^2+yy.^2);

TT= zeros(1/Q+1,1/Q+1);

%家和

for M=1:1/Q+1

for N=1:1/Q+1

r=zz(M,N);

T=0;

for m=1:MAXS

B=j(2,m);

T=T+besselj(0,B*r)*besselj(1,B*a)*(1-exp(-A*B^2*t))/(B^3*besselj(0,B*b)^2);

if m==MAXS

TT(M,N)=(T*2*a+a^2*A*t)*d*I0/(k*h*b^2);

end

end

end

end

surf(xx,yy,TT)

%}

运行代码出现下边的错误:

未定义与 'matlab.graphics.chart.primitive.Line' 类型的输入参数相对应的运算符 '*'。

出错 Untitled12_3 (line 54)

TT1(1,N)=(T*2*a+a^2*A*t)*d*I0/(k*h*b^2);

非常抱歉,我之前的回答有误。在MATLAB中,`WindowButtonMotionFcn`属性不适用于`Line`对象。我犯了一个错误。 在这种情况下,我们可以使用`WindowButtonMotionFcn`属性来设置图形窗口的鼠标移动事件处理函数,然后在事件处理函数中根据鼠标位置更新曲线的数据。 以下是更新后的示例代码: ```matlab % 创建初始曲线数据 x = linspace(0, 3000, 100); y1 = linspace(0, 250, 100); y2 = linspace(0, 250, 100); y3 = linspace(0, 250, 100); y4 = linspace(0, 250, 100); % 绘制初始曲线 figure; h1 = plot(x, y1, 'r'); hold on; h2 = plot(x, y2, 'g'); h3 = plot(x, y3, 'b'); h4 = plot(x, y4, 'k'); % 添加图例 legend('曲线1', '曲线2', '曲线3', '曲线4'); title('移动点以改变曲线形状'); xlabel('间'); ylabel('传感器切换次数'); % 添加鼠标按下事件处理函数 set(h1, 'ButtonDownFcn', @(src, ~) startDrag(src, h1)); set(h2, 'ButtonDownFcn', @(src, ~) startDrag(src, h2)); set(h3, 'ButtonDownFcn', @(src, ~) startDrag(src, h3)); set(h4, 'ButtonDownFcn', @(src, ~) startDrag(src, h4)); % 鼠标按下事件处理函数 function startDrag(src, h) set(gcf, 'WindowButtonMotionFcn', @(~,~) drag(src, h)); set(gcf, 'WindowButtonUpFcn', @(~,~) stopDrag(src)); end % 鼠标移动事件处理函数 function drag(src, h) % 获取当前鼠标位置 pos = get(gca, 'CurrentPoint'); x = pos(1, 1); y = pos(1, 2); % 更新曲线数据 xdata = get(h, 'XData'); [~, idx] = min(abs(xdata - x)); ydata = get(h, 'YData'); ydata(idx) = y; % 更新曲线 set(h, 'YData', ydata); end % 鼠标松开事件处理函数 function stopDrag(src) set(gcf, 'WindowButtonMotionFcn', ''); end ``` 这个代码会创建一个图形窗口,并在其中绘制了四条曲线。每条曲线都可以通过鼠标拖动来改变曲线的形状。你可以通过移动鼠标来拖动曲线上的点,从而改变曲线的形状。 再次对之前的错误表示歉意,并希望这次的回答能够满足你的需求。如果还有任何问题,请随提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值