matlab画图,我想在某一点标记一下,但是图片上的标记符号移位了,不是在点的正中间,怎么办?
```figure
plot(a)
hold on
plot( [0 500],[3.5 3.5],'r-.')
hold on
plot( [0 500],[2.5 2.5],'r-.')
hold on
for i=1:length(a)
if a(i)>=3.5
text(i,a(i),"*","color","r","FontSize",20);
end
end
```
在 MATLAB 中,text 函数是用于在指定坐标处插入文字或标记的函数。如果标记符号位置不准确,可以考虑更改 text 函数中的位置参数。通过调整位置参数,可以将文本或标记的位置向左或向右、向上或向下移动。
在您提供的代码中,text 函数中的位置参数在默认情况下是放置在数据点的左下方的。如果需要将其移到数据点的正中间,可以用 datacursormode 工具,该工具可以直接在图形中标出数据点,并可以手动拖动标记位置。
示例代码:
figure
plot(a)
hold on
plot([0 500],[3.5 3.5],'r-.')
hold on
plot([0 500],[2.5 2.5],'r-.')
hold on
for i = 1:length(a)
if a(i)>=3.5
h = text(i,a(i),'*','color','r','FontSize',20);
set(h, 'HorizontalAlignment', 'center', 'VerticalAlignment', 'middle');
end
end
在上述代码中,我们创建了一个新的 text 对象 h,并使用 set 函数调整其位置参数。设置 'HorizontalAlignment', 'center' 和 'VerticalAlignment', 'middle' 可使图形与数据点中心对齐。
不知道你这个问题是否已经解决, 如果还没有解决的话:但是函数关系不确定,就是需要自己定义函数关系,然后自己调试函数中需要的参数的值。
刚开始思路是自定义一个函数关系式,然后用pso求解最优参数,其最后输出的y的值为下图所示,输入有三个自变量,x1,x2,x3.
最后的需求是找到x1,x2,x3.与y的具体关系式子,比如
y=ax1+bx2+cx3;
y=ax1+bx2+cx3+ex1x1+fx2x2++ex3x3;等等
找到思路后,尝试了很多能想到的函数关系,当然,部分结果我感觉是还可以:从刚开始的下图效果,这个拟合结果整体趋势是有了,但是结果很不理想,然后增加了更复杂的参数模型
进补到下列效果,大概是63个值与标准y的误差在1%-2%之间,此时自定义的拟合函数变为
看到效果还不错,然是还是有很大误差。开头和结尾差距还是很大
到后来,放弃自己试了, 用ANN去算了,然后手动带内核参数生成函数,大概有37个参数,函数式一长串,但是拟合效果还是可以的,如下图所示:
但是这个效果,只有220个点误差在范围内,一共280个数据,还有60个数据误差偏大
仔细看了看发现,应该就是开头和结尾误差大
最后,最后,经过多次尝试,
278个点正确,满足1%-2%的误差,也达到最终拟合需求。
记录一下,需要数据拟合的可以私聊