前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >5000个matlab常见问题锦集的雄关路(001)

5000个matlab常见问题锦集的雄关路(001)

作者头像
巴山学长
发布2019-12-26 18:54:54
4.5K0
发布2019-12-26 18:54:54
举报
文章被收录于专栏:巴山学长巴山学长巴山学长
为了方便各位小伙伴快速了解matlab编程中常遇问题,公众号特地推出matlab问题锦集系列,力争收集5000个常见matlab编程问题,每期推送10至30个不等的问题及解答方案,希望对大家的matlab学习有帮助。

若无特殊说明,所推送问答均来自于MATLAB AnswersStack Overflowmatlab中文论坛matlab中国论坛matlab技术论坛小木虫CSDN以及百度贴吧等不再作专门的参考资料来源声明

现在就开5000个matlab问题收集的第一步,本期推送12个问题!


1、如何修改 MATLAB 启动时的工作路径?

至少有以下三种方法:

1.MATLAB 主页->预设->常规,右侧可以设置启动时的工作路径。

2.建立 startup.m 文件,在文件中写入命令:

cd C:\matlab_startup

并将文件放到 MATLAB 的搜索路径(path)下,一般会选择MATLAB安装路径\toolbox\local

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','2\pi'}) 
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编程遇到的问题以及解决方法推荐给小编,或者在推文下方留言,让大家一起学习,共同进步!

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-12-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 巴山学长 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据保险箱
数据保险箱(Cloud Data Coffer Service,CDCS)为您提供更高安全系数的企业核心数据存储服务。您可以通过自定义过期天数的方法删除数据,避免误删带来的损害,还可以将数据跨地域存储,防止一些不可抗因素导致的数据丢失。数据保险箱支持通过控制台、API 等多样化方式快速简单接入,实现海量数据的存储管理。您可以使用数据保险箱对文件数据进行上传、下载,最终实现数据的安全存储和提取。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档