%用于從ISC給出的地震目錄中讀取時間的經緯度、深度和震級c='mrwan_earthquake_catalogue_140228.txt';cmap=jet(64); %產生調色板mindep=0; %所顯示的最小深度maxdep=720; %所顯示的最大深度Max_Min=maxdep-mindep; %最小深度與最大深度的差fp=fopen(c,'r'); %打開目錄文件worldmap([-90,90],[0,360]); %繪制世界范圍地圖load coast; %加載海岸線的數據plotm(lat,long,'k') %將海岸線的數據用黑線畫出%將目錄文件中的解釋語句略過for ii=1:2sr=fgets(fp);endNumEQ=0;while 1sr=fgets(fp); %讀取文件一行數據file_state=feof(fp);if (file_state==1)|(sr(1:4)=='STOP'),break,endNumEQ=NumEQ+1;Elat=str2num(sr(1:2));Elon=str2num(sr(4:5));Edep=str2num(sr(9:10));Emag=str2num(sr(6:9));Ind=fix((Edep-mindep)/Max_Min*64);%找到此深度對應的調色板序號%fixs()是取整函數if(Ind<1) Ind=1; endplotm(Elat,Elon,'.','MarkerSize',5,'Color',cmap(Ind,:)) %用調色板序號用點繪制地震endfclose(fp); %關閉文件colorbar('location','southoutside','XTick',linspace(0,1,10),'Xticklabel',num2str([linspace(mindep,maxdep,10)]')); %加上色標s=sprintf('所用地震數目:%f',NumEQ)??? Error using ==> setColor value must be a 3 element numeric vector.Error in ==> linem at 148if ~isempty(varargin); set(hndl0,varargin{:}); endError in ==> plotm at 64[hndl0,msg] = linem(lat,lon,varargin{:});(外行請不要水經驗,謝謝合作)EVENTID,AUTHOR ,DATE ,TIME ,LAT ,LON ,DEPTH,DEPFIX,AUTHOR ,TYPE ,MAG14540499,EHB ,2007-12-01,02:41:14.07,36.5450, 70.9520,190.0,TRUE ,ISC ,mb , 4.1,STOPPlease consider the ISC mirror server hosted atIRIS DMC as it may be faster.International Seismological CentrePipers Lane, Thatcham, BerkshireUnited Kingdom RG19 4NS+44 (0)1635 861022, voice; +44 (0)1635 872351,faxadminisc.ac.uk, e-mail
2 回答

白板的微信
TA貢獻1883條經驗 獲得超3個贊
這個錯誤別人不好判斷,因為:
1、程序需要讀文件,你沒有提供;
2、你貼的出錯信息也不完整,究竟是在這段代碼的哪一行出的錯?
從你使用plotm的兩行代碼看,應該都沒什么大問題。
請把文件 mrwan_earthquake_catalogue_140228.txt 上傳到網盤,再幫你分析。
或者,你也可以試著自己解決問題:
在出錯的位置設置斷點,跟蹤程序的運行,看究竟出錯時變量的值是什么,以及為什么會是這個值。找到原因了,一般來說,也就知道該怎么解決了。

茅侃侃
TA貢獻1842條經驗 獲得超21個贊
應該是你linem函數的輸入參數不對,不符合該函數的讀取吧!比如說這個函數是處理一個向量的,而你輸入的參數是一個矩陣。我覺得應該是參數的格式沒有相符吧!(說的不一定對哦)
添加回答
舉報
0/150
提交
取消