Re: [問題] Read text numerical data file已回收

看板MATLAB作者 (Acoustic)時間16年前 (2009/02/18 16:32), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串2/2 (看更多)
%%% Read file and save its content in the cell 'GText' GText = textread('HFSS_FILE','%s','delimiter','\n'); %%% Parse Grid Information [t1,t2,t3]=strread(GText{1},'%*s%f %f %f','delimiter','['); TT = [t1 t2 t3]; (TT(2,:)-TT(1,:))/TT(3,:)+1 %%% NoX, NoY, NoZ %%% Parse data and manipulate 'No Solution' if necessary GData = zeros(size(GText,1)-2,9); for k=3:size(GText,1) GData(k-2,1:9)=str2num(strrep(GText{k},'No Solution',... '0.0e00 0.0e00 0.0e00 0.0e00 0.0e00 0.0e00')); end 數值資料都會存在 GData 裡, 要怎麼處理就端看您的需求了 ※ 引述《saltlake (SaltLake)》之銘言: : 請問怎樣讓 MatLab 讀取 HFSS 輸出的文字格式資料檔如下: : Grid Output Min: [-0.14 -0.18 -1.43] Max: [0.02 -0.02 -1.19] Grid Size: [0.004 : 0.004 0.004] : Complex Vector data "<Ex,Ey,Ez>" : -1.4e-01 -1.8e-01 -1.43e+00 -2.8e+00 8.2e-01 9.5e-01 -2.0e+00 3.3e-01 6.2e-01 : ... : 前兩列在檔案是純文字 第三列開始是倍精的數字資料 : (x,y,z,ExReal,ExImagine,EyRe,EyIm,EzRe,EzIm) : 數據資料的比數根據前兩列文字資料計算而得 : NoX = ( 0.02-(-0.14) )/0.04+1 : NoY = ( -0.02-(-0.18) )/0.04+1 : NoZ = ( -1.19-(-1.43) )/0.04+1 : 怎樣把數據讀取之後指定到正確大小的陣列變數是第一個問題 : 第二個問題比較麻煩 有時候檔案有非數值資料比如 infinite 的時候 : HFSS 會指定 No Solution 這個字串代替之 比方說 : -1.4e-01 -1.8e-01 -1.43e+00 No Solution : 前三個數字因為是座標所以永遠有數字 可是之後一但有沒數字的情況 : 六個數值會通通用 "No Solution" 單一字串表示 這樣夾雜著數據跟字串 : 實在不知怎處理 : 目標是在這種情況下照樣能讀入 MatLab 然後把 "No Solution" 用 : 6 個 0.0e00 取代成為一致的數值資料 : 請問如何達成? : 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.114.27.154

02/19 10:09, , 1F
感恩 :)
02/19 10:09, 1F
文章代碼(AID): #19cyUs8e (MATLAB)
文章代碼(AID): #19cyUs8e (MATLAB)