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編程遇到的問題以及解決方法推薦給小編,或者在推文下方留言,讓大家一起學習,共同進步!