Matlab如何將matrix另存新檔?

Hi - 向大家請教為何我無法將 matrix <350x38 char>另存新檔?

例如:

PRCP =

47004508 PRCP 2002 01 01 07 00000 R

47004508 PRCP 2002 01 02 07 00000 R

47004508 PRCP 2002 01 03 07 00000 R

47004508 PRCP 2002 01 04 07 00000 R

47004508 PRCP 2002 01 05 07 00001 0

47004508 PRCP 2002 01 06 07 00001 0

47004508 PRCP 2002 01 07 07 00000 R

47004508 PRCP 2002 01 08 07 00000 R

.... .... ....

將其存成*.txt。

小弟目前使用以下指令但輸出檔內容並非如上。

save PRCP.txt PRCP -ASCII

謝謝你們。

已更新項目:

謝謝您。小弟原本程式如下:

fid=fopen('/Users/cks/2002', 'r');

PRCP = [];

...

if (obs=='PRCP')

PRCP = [PRCP;std s obs s year s month s dom s hour s sign value s flag1 s flag2];

end

fclose(fid);

save PRCP.txt PRCP -ASCII

請問:fopen可以重複使用嗎?fid會不會被取代?在上面的程式,該如何將PRCP那個matrix資料用fprint寫入另一個檔案?感溫~~

2 個解答

評分
  • Chaos
    Lv 7
    1 0 年前
    最佳解答

    ascii為數值碼 無法存成字串碼 你可能要用fprintf的方式來存

    2008-08-27 00:56:51 補充:

    我是過兩種方式 第一種是單純用fwrite

    但是不會分段

    之後我試用令一個指令叫做dlmwrite

    此指令似乎可行且容易

    我用的例子如下 先產生一個字串矩陣

    >> ascii = char(reshape(32:127,32,3)')

    ascii =

    !"#$%&'()*+,-./0123456789:;<=>?

    @ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_

    `abcdefghijklmnopqrstuvwxyz{|}~

    >> whos

    Name Size Bytes Class

    ascii 3x32 192 char array

    可以看到ascii是一個字元矩陣

    dlmwrite(filename,var,'D')為用法 檔名為filename 你要寫入的字元矩陣為var D為區隔每個矩陣中個別位元的分隔符號 預設為逗點

    故當我用>> dlmwrite('data.txt',ascii) 結果為

    ,!,",#,$,%,&,',(,),*,+,,,-,.,/,0,1,2,3,4,5,6,7,8,9,:,;,<,=,>,?

    @,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,[,\,],^,_

    `,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,{,|,},~,

    若改為>> dlmwrite('data.txt',ascii,' ')就每個字元間會接空格

    若改為>> dlmwrite('data.txt',ascii,'')每個字元間就沒有空格

    你試試看吧

    參考資料: 教學經驗
  • 1 0 年前

    Chaos,可否請您移駕到"補充內容"指導一下?我有幾個地方不懂,希望你指點一下。

還有問題?馬上發問,尋求解答。