5000个matlab常见问题锦集的雄关路(001)
- 2019 年 12 月 26 日
- 筆記
若无特殊说明,所推送问答均来自于MATLAB Answers、Stack Overflow、matlab中文论坛、matlab中国论坛、matlab技术论坛、小木虫、CSDN以及百度贴吧等,不再作专门的参考资料来源声明。
现在就开5000个matlab问题收集的第一步,本期推送12个问题!
1、如何修改 MATLAB 启动时的工作路径?
至少有以下三种方法:
1.MATLAB 主页->预设->常规,右侧可以设置启动时的工作路径。
2.建立 startup.m 文件,在文件中写入命令:
cd C:matlab_startup
并将文件放到 MATLAB 的搜索路径(path)下,一般会选择MATLAB安装路径toolboxlocal
3.这个方法仅对 Windows 操作系统,且通过双击快捷方式启动 MATLAB有效。右键快捷方式,选择属性,并在 Start in 中设置启动时的工作路径。
需要注意的是,上述三种方法互有冲突,因此仅建议通过一种方式进行设置。
2、如何在新版本的 MATLAB 中绘制多边形?
在旧版本中,一般用 impoly 函数绘制多边形,在新版本(R2018b之后)中可以用 drawpolygon
roi = drawpolygon('Color','r');
3、如何改变坐标轴刻度线与文字的颜色?
plot(1:10, rand(1,10),'ko-'); ax = gca; set(ax,'XColor','b'); ax.XTickLabel = arrayfun(@(ii) ['color{red}', ax.XTickLabel{ii}], [1:1:length(ax.XTickLabel)], 'UniformOutput',false);
4、如何用plot在绘制图形的同时添加小三角、矩形、菱形等标志?
标记符 点形 + 加号 o 圆圈 * 星号 . 实心点 x 叉号 s 正方形 d 钻石形 ^ 上三角形 v 下三角形 > 右三角形 < 左三角形 p 五角星形 h 六角星形
5、MATLAB 中如何控制坐标轴刻度线标签、范围和坐标轴刻度线位置?
可以使用 xlim、ylim 和 zlim 函数控制轴范围。对这些函数的传参数形式为:[最小值,最大值]。例如:
x = linspace(0,2*pi); y = sin(x); plot(x,y); xlim([0 2*pi]) ylim([-1.5 1.5])
可以使用 xticks、yticks 和 zticks 函数控制刻度线沿轴的位置。将刻度线位置指定为单调递增的矢量。这些值不需要均匀分布。例如:
xticks([0 pi 2*pi]) yticks([-1 0 1])
若要控制与每个刻度线关联的标签,请使用 xticklabels、yticklabels 和 zticklabels 函数。使用字符向量的元胞数组指定标签。如果不希望显示刻度标签,请指定空元胞数组{}。若要在标签中包含特殊字符或希腊字母,请使用 Tex 标记,如 pi。例如:
xticklabels({'0','pi','2pi'}) yticklabels({'min','y = 0','max'})
6、请问一下,如何找到一个数组中最大值所处的位置呢?
A=magic(3); value=max(A(:)); [row col]=find(value==A);
7、在MATLAB中,如何计算两个矢量之间的夹角?
可以使用 cross 函数计算两个矢量的外积(即叉乘或向量积),使用 dot 函数计算内积(即点乘),然后使用 atan2d 函数计算正切值。例如:
u = [1 2 0]; v = [1 0 0]; ThetaInDegrees = atan2d(norm(cross(u,v)),dot(u,v));
还可以将使用夹角的余弦值进行计算,这在夹角较小时计算可能有误差。例如:
u = [1 2 0]; v = [1 0 0]; CosTheta = dot(u,v)/(norm(u)*norm(v)); ThetaInDegrees = acosd(CosTheta);
8、MATLAB 为什么报错“未定义函数或变量” ?
MATLAB 不将指定的字符串识别为 MATLAB 路径上的函数的名称或变量。可能的原因包括:
1)键入函数或变量名时的拼写错误(例如,当您要键入小写字母 l 时键入了数字1)。同时,MATLAB 的新版本提供“是不是想输入:”来解决这些拼写错误。
2)函数或变量名的错误大小写。同时,MATLAB 的新版本提供“是不是想输入:”来解决这些拼写错误。
3)改变了路径,使得被调用的函数不在 MATLAB 路径下。
4)使用未获得许可的功能或未安装的工具箱。
5)调用对象的方法,而没有指明对象名,仅给出了方法名。
6)调用在其他操作系统平台编译的 MEX 函数。
解决方法:
验证未定义的函数或变量是否可见(位于路径或当前工作区中),以及它是否在执行此代码行之前已经定义。
如果确定变量或函数存在,请验证函数或变量名的大小写。如果未定义的标识符是一个函数,则 which函数可以帮助您验证它对发生错误的函数是否可见。如果您的 MATLAB 搜索路径有问题,请运行以下 MATLAB 命令, 然后重新启动 MATLAB。
9、MATLAB 中,如何在一组子图上插入标题?
在 MATLAB R2018b 中,可以通过 sgtitle 函数实现。参考: https://www.mathworks.cn/help/releases/R2018b/matlab/ref/sgtitle.html
对于早期版本,请查看 File Exchange 上的函数: https://www.mathworks.cn/matlabcentral/fileexchange/3218-mtit-a-pedestrian-major-title-creator
10、MATLAB 如何绘制具有给定半径和中心坐标的圆?
以下是用来实现该功能的 MATLAB 函数:
function h = circle(x,y,r) hold on th = 0:pi/50:2*pi; xunit = r * cos(th) + x; yunit = r * sin(th) + y; h = plot(xunit, yunit); hold off
另一种方法是使用 rectangle 函数:
function h = circle2(x,y,r) d = r*2; px = x-r; py = y-r; h = rectangle('Position',[px py d d],'Curvature',[1,1]); daspect([1,1,1])
如果使用 MATLAB R2012a 或者之后版本的 Image Processing Toolbox,可以用 viscircles 函数:
viscircles(centers,radii)
11、如何从 MATLAB 图形中提取数据?
如果图形存储在文件中,如 example.fig,则使用 openfig 函数打开图形文件。将 Figure 对象分配给变量fig。
fig = openfig('example.fig');
如果图片已经打开,使用 gcf 函数获取 Figure 对象的属性并分配给 fig。
fig = gcf;
可以使用 Children 属性, 也可以使用 findobj 函数访问绘制的图形对象的数据。
通过 Children 属性访问绘制的图形对象。Axes 对象是 Figure 的子对象。数据等通常是 Axes 的子对象。
axObjs = fig.Children dataObjs = axObjs.Children
出现在命令窗口中的 dataObjs 数组包含数据信息。不同的图形对象以不同的方式存储数据。例如,Line对象将数据存储在 XData、YData 和 ZData 中。如果 dataObjs 中的第一个元素是 Line 对象, 则使用此代码访问其数据。
x = dataObjs(1).XData y = dataObjs(1).YData z = dataObjs(1).ZData
12、在MATLAB的plot中,如何添加两行的标题和坐标注释?
通过 cell(元胞数组)来添加多行文本。请参考:
plot(1:10) title({'First line';'Second line'}) xlabel({'First line';'Second line'})
以上就是今天的全部内容,欢迎各位小伙伴将自己平时matlab编程遇到的问题以及解决方法推荐给小编,或者在推文下方留言,让大家一起学习,共同进步!