看到了北京一則新聞,想到如何測試雙向鏡子?百度之。
只要做以下簡單的測試:把你的指甲尖放在鏡子表面,如果在指甲尖與倒映圖像之間有間隙,那就是真的鏡子。然而,如果你的指甲尖能直接碰觸到指甲反射影像,當心!那就是雙向鏡了!
一、matlab里如何顯示點的坐標?
- 在圖里顯示點坐標
工具欄中有一個 "Data Cursor"按鈕,點擊之,箭頭變成小十字,點要顯示坐標的位置,就出來了。
- 采用字符串函數處理
1: x=1+4*rand(1,5);2: y=2+2*rand(1,5);3: plot(x,y,'o-')4: %text(x,y,s)就是在點(x,y)處顯示字符串s、5: for i=1:length(x)6: text(x(i),y(i),['(',num2str(x(i)),',',num2str(y(i)),')'])7: %在(x,y)的每一點處添加文字,文字內容為(x,y)8: %其中每一點的x,y用num2str把數字轉化成字符串9: end
還可以這么寫。
1: x=1+4*rand(1,5);2: y=2+2*rand(1,5);3: plot(x,y,'o-')4: for i=1:length(x)5: str1 =strcat(strcat('(',num2str(x(i))),',');6: str2 = strcat(num2str(y(i)),')');7: text(x(i),y(i),strcat(str1,str2))8: %在(x,y)的每一點處添加文字,文字內容為(x,y)9: %其中每一點的x,y用num2str把數字轉化成字符串10: end
還是第一個的好,因為他知道字符串的多種連接方式(text(x,y,s)就是在點(x,y)處顯示字符串s)。
二、字符串連接
- 用中括號將str1和str2像矩陣元素一樣包含起來
1: >> str1='ILoveYou';2: >> str2='Matlab';3: >> [str1,str2]4: ans =5: ILoveYouMatlab
若想驗證str1和str2確實被連接起來,可調用length函數測試生成字符串的長度。
- 用strcat函數連接
1: >> strcat(str1,str2)2: ans =3: ILoveYouMatlab
或者采用下面的方式。
1: strcat({'Red','Yellow'},{'Green','Blue'})2: ans =3: 'RedGreen' 'YellowBlue'4: >> {'Red','Yellow'}5: ans =6: 'Red' 'Yellow'
下面就不一樣了。
可以看出這和plot([],[])的參數位置不一樣。1: >> strcat(['Red','Yellow'],['Green','Blue'])2: ans =3: RedYellowGreenBlue
- 利用sprintf函數
1: >> number=123;2: >> sprintf('%s%d','Fuck',number)3: ans =4: Fuck123
利用class(ans)可以知道Fuck123的類型為char。
三、中括號與大括號區別
大括號用於元胞數組,不明白,暫且不管,沒找到資料。
四、散點圖
plot([x1,x2],[y1,y2])這樣就懂了吧,看參數的意思,試驗出來的。
散點圖除了scatter函數外,還有stem函數可以使用,其他的沒查。
1: >> y=x.^2;2: >> stem(x,y,'fill');3: >> title('y=x^2散點圖');
五、圖的說明
下面在同一坐標內,分別用不同線型和顏色繪制曲線y1=0.2e-0.5xcos(4πx) 和y2=2e-0.5xcos(πx),標記兩曲線交叉點。
1: figure(1);%參數必須是整數標量,所以必須采用set來設置標題欄“復雜的函數”2: %注意觀察和titile的區別3: set(gcf,'Name','復雜的函數');4: title('復雜地函數');5: %如果用axis初始化坐標范圍,那么會提示沒有初始化x,所以先其他方法初始化x,axis必須放在plot后6: %而且如果用axis已經生成的圖片可能偏上或者偏下,所以axis不常用來設置坐標范圍,只設置x就行了7: x=linspace(0,2*pi,1000);%xlim([0,2*pi])8: xlabel('x軸(m)');9: ylabel('y軸(m)');10: y1=0.2*exp(-0.5*x).*cos(4*pi*x);11: y2=2*exp(-0.5*x).*cos(pi*x);12: k=find(abs(y1-y2)<1e-2);13: %查找y1與y2相等點(近似相等)的下標14: x1=x(k); %取y1與y2相等點的x坐標15: y3=0.2*exp(-0.5*x1).*cos(4*pi*x1);16: %求y1與y2值相等點的y坐標17: plot(x,y1,'b',x,y2,'r');18: hold on19: scatter(x1,y3);20: legend('A曲線','B曲線','C曲線');%不能再加上C曲線,因為scatter和plot不屬於同一個體系,會提示“未定義函數或變量 'x'”21: %plot(x,y1,x,y2,'k:',x1,y3,'bp');這個也可以標記出來點,如果不加p,那么低三個曲線就是折線圖,不過沒查到p啥意思22: %不知道也沒關系,會用替代方案也好23: %axis([0 2*pi -1 5]);%注意里面還有中括號,否則一直提示"不是MATLAB表達式"
24: grid on
圖名標注可用:title('xx關系圖')和set(gcf,'Name','圖片1')不一樣,set設置的是圖片標題欄,而前者設置顯示在圖片中心區域axis([0,22,0,3]);---顯示范圍為:X軸從0-22, Y軸從0-3顯示。xlabel('電壓(V)'),ylabel('電流(A)') 分別表示在X軸下標示電壓(V),Y軸旁標示“電流(A)”
legend('A曲線 ','B曲線','C曲線') 用於說明圖中的曲線的說明,順序和plot(x1,y1,x2,y2,x3,y3)的曲線1、2、3相同即可。
問題來了,如何控制y軸顯示精度(x軸用linspace第三個參數表示共幾個,實際就內涵了精度,或者x=1:1:10,那么精度是1),y軸不能用x那樣,就怕圖形偏上偏下,所以我想的方法是先繪制一下,確定y軸范圍比如1到6,那么再次加上y=1:0.5:6,這樣就不怕偏上偏下,而且精度0.5。學習還是想一些簡單的方法吧,不要遇到問題就想去找函數,個人感想而已。
六、繪制光滑曲線
對於離散坐標點,scatter划散點圖,plot划折線圖,那么問題來了,如何讓折線圖平滑?
參考http://philotack.blog.163.com/blog/static/37473423201010910230221/