weixin_55201368 2023-03-04 17:48 采纳率: 100%
浏览 25
已结题

matlab几条曲线分段进行平均加权,分段函数

计算曲线上的点加权问题,在X值为10-53之间,三条曲线对应的Y都不为0,对三条曲线进行平均加权,在X值为53-54之间,只有后两条曲线Y不为0,对这两条进行加权。
这个是我的代码,运行之后报错,前面三段是画曲线的代码,没有问题,最后一段代码是加权的,有问题,请教一下大家是哪里出错了,谢谢了!


```c++
clear;
clc;
syms y
x =10:1:63.45842269
a =[]
for x1=x
if x1<=53.73870947
    y11=-1.824e-5*x1.^3+0.05575*x1.^2-0.1125*x1-4.432;
else 
    y11=0;
end
a = [a,y11]
end
plot(x,a)
hold on

b =[]
for x2=x
if x2<=54.95367362
    y12=-1.726e-5*x2.^3+0.05423*x2.^2-0.08238*x2-4.582;
else 
    y12=0;
end
b = [b,y12]
end
plot(x,b)
hold on 

c =[]
for x3=x
if x3<=56.16863777
    y13=-1.637e-5*x3.^3+0.05279*x3.^2-0.05384*x3-4.724;
else 
    y13=0;
end
c = [c,y13]
end
plot(x,c)
hold on 


x =10:1:63.45842269;
if x<=53.73870947
y=(1/3)*(a+b+c)
elseif (53.73870947<=x)&&(x<=54.95367362)
        y=(1/2)*(b+c)
else y=c
end
plot(x,y,'*')




  • 写回答

2条回答 默认 最新

  • 陈书予 2023年6月份城市(北京)之星TOP 1 2023-03-04 17:55
    关注

    代码中的问题是if-else语句只适用于标量或矢量条件。在这种情况下,条件是一个向量。为了将条件应用于所有元素,您可以使用元素级逻辑运算符(.<=,.>,.>=,.==,.~=)。

    因此,您需要在if-else语句中添加“.”来执行元素级逻辑运算,如下所示:

    if x<=53.73870947
        y=(1/3)*(a+b+c);
    elseif (53.73870947<=x)&(x<=54.95367362)
        y=(1/2)*(b+c);
    else
        y=c;
    end
    

    此外,您需要将x作为一个向量处理。因此,您可以使用点运算符(.)来执行元素级运算,如下所示:

    x = 10:1:63.45842269;
    a = -1.824e-5*x.^3 + 0.05575*x.^2 - 0.1125*x - 4.432;
    a(x>53.73870947) = 0;
    
    b = -1.726e-5*x.^3 + 0.05423*x.^2 - 0.08238*x - 4.582;
    b(x>54.95367362) = 0;
    
    c = -1.637e-5*x.^3 + 0.05279*x.^2 - 0.05384*x - 4.724;
    c(x>56.16863777) = 0;
    
    y = zeros(size(x));
    y(x<=53.73870947) = (1/3)*(a(x<=53.73870947)+b(x<=53.73870947)+c(x<=53.73870947));
    y((53.73870947<=x)&(x<=54.95367362)) = (1/2)*(b((53.73870947<=x)&(x<=54.95367362))+c((53.73870947<=x)&(x<=54.95367362)));
    y(x>56.16863777) = c(x>56.16863777);
    
    plot(x,a)
    hold on
    plot(x,b)
    hold on 
    plot(x,c)
    hold on 
    plot(x,y,'*')
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 3月12日
  • 已采纳回答 3月4日
  • 修改了问题 3月4日
  • 创建了问题 3月4日

悬赏问题

  • ¥15 对于squad数据集的基于bert模型的微调
  • ¥15 为什么我运行这个网络会出现以下报错?CRNN神经网络
  • ¥20 steam下载游戏占用内存
  • ¥15 CST保存项目时失败
  • ¥15 树莓派5怎么用camera module 3啊
  • ¥20 java在应用程序里获取不到扬声器设备
  • ¥15 echarts动画效果的问题,请帮我添加一个动画。不要机器人回答。
  • ¥15 Attention is all you need 的代码运行
  • ¥15 一个服务器已经有一个系统了如果用usb再装一个系统,原来的系统会被覆盖掉吗
  • ¥15 使用esm_msa1_t12_100M_UR50S蛋白质语言模型进行零样本预测时,终端显示出了sequence handled的进度条,但是并不出结果就自动终止回到命令提示行了是怎么回事: