24小时热门版块排行榜    

查看: 2157  |  回复: 10

mei3014

金虫 (正式写手)

木有头屑

[求助] matlab txt文件数据提取转换

假设我有一个1.txt的数据文本,里面有这么一段:
3996         3.9950000000e+003        -1.46929e-005         1.39538e-005
3997         3.9960000000e+003        -1.65129e-005         6.65343e-005
3998         3.9970000000e+003         4.05215e-005        -2.06176e-004
3999         3.9980000000e+003        -2.65027e-005         1.81863e-004
4000         3.9990000000e+003         1.12635e-001         2.53541e-001
4001         4.0000000000e+003        -2.25194e-001        -5.07143e-001
4002         4.0010000000e+003         1.12585e-001         2.53582e-001
4003         4.0020000000e+003        -1.29527e-004        -7.78130e-005
4004         4.0030000000e+003         1.62932e-004         7.54291e-005
我需要的数据是
4001         4.0000000000e+003        -2.25194e-001        -5.07143e-001
换言之就是4.0000000000e+003这个频率下的-2.25194e-001-5.07143e-001i 这个声压数据
然后重复刚才的过程,一个txt文件里需要提取60个4.0000000000e+003这个频率下对应的声压数据。再把这60个复数数据导入另一个txt文本,每个复数数据之间留个空格,那么就大功告成了。
请问各位大神,这matlab程序该怎么编写才能一步完成以上操作,谁帮下忙,非常感谢,如果做不到一步完成,提供些思路也可以。可以追加分。谢谢!
回复此楼

» 收录本帖的淘帖专辑推荐

matlab

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

一勤天下无难事,处世无难忍最高。
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

mei3014

金虫 (正式写手)

木有头屑

X1——X2 50cm.txt(56.41MB)
http://kuai.xunlei.com/d/GOYWKZJKEDUD?p=130497
这是原始数据文件,内容较多
一勤天下无难事,处世无难忍最高。
2楼2012-11-02 15:35:07
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

baobiao007

木虫 (职业作家)

中国特色

【答案】应助回帖

★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
xiegangmai: 金币+1, 谢谢应助 2012-11-02 19:56:25
mei3014: 金币+5, 有帮助, 谢谢回帖! 2012-11-03 09:33:51
[a(:,1),a(:,2),a(:,3),a(:,4)]=textread('ddt.txt');  %读入数据,假设你的数据文件名为ddt.txt
ind=find(a(:,1)==4000);
b=a(ind,; % 此时已把ddt.txt中所有含4000的行都提取出来单独组成了矩阵b

写到文件里,应该很容易了吧,自己弄吧
我同意叔本华的观点,人们投身艺术和科学领域的强烈愿望之一就是逃离痛苦、残酷和枯燥无味的现实生活,逃离自己飘忽不定的七情六欲的桎梏。--爱因斯坦
3楼2012-11-02 17:38:09
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

baobiao007

木虫 (职业作家)

中国特色

【答案】应助回帖

xiegangmai: 帖中代码部分可使用“插入代码”功能 2012-11-02 19:56:34
code:
[a(:,1),a(:,2),a(:,3),a(:,4)]=textread('ddt.txt');  %读入数据,假设你的数据文件名为ddt.txt
ind=find(a(:,1)==4000);
b=a(ind,; % 此时已把ddt.txt中所有含4000的行都提取出来单独组成了矩阵b
我同意叔本华的观点,人们投身艺术和科学领域的强烈愿望之一就是逃离痛苦、残酷和枯燥无味的现实生活,逃离自己飘忽不定的七情六欲的桎梏。--爱因斯坦
4楼2012-11-02 17:39:09
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

mei3014

金虫 (正式写手)

木有头屑

引用回帖:
3楼: Originally posted by baobiao007 at 2012-11-02 17:38:09
=textread('ddt.txt');  %读入数据,假设你的数据文件名为ddt.txt
ind=find(a(:,1)==4000);
b=a(ind,; % 此时已把ddt.txt中所有含4000的行都提取出来单独组成了矩阵b

写到文件里,应该很容易了吧,自己弄吧...

Header Size:         79                  
Pulse Version:         80                  
Running Pulse Version:        PULSE LabShop v. 15.1.0.15 - 2010-11-08                  
Decimal Symbol:        .                  
Date Format:        'yyyy-MM-dd'                  
Time Format:        'HH:mm:ss.mmm'                  
Data Type:        Complex                  
Slice:        False                  
Z-Axis type:        Linear                  
Z-Axis size:        1                  
Z-Axis unit:                           
Z-Axis first value:         0.0000000000e+000                  
Z-Axis delta:         1.0000000000e+000                  
X-Axis type:        Linear                  
X-Axis size:        6401                  
X-Axis unit:        Hz                  
X-Axis first value:         0.0000000000e+000                  
X-Axis delta:         1.0000000000e+000                  
                           
AmplitudeUnit:        Pa                  
Analyzer:        FFT_Spectrum_Averaging                  
AnalyzerName:        FFT Analyzer                  
                           
                           
Bipolar:        True                  
CenterFrequency:         3.2000000000e+003                  
                           
                           
                           
                           
dBReference:         2.0000000000e-005                  
                           
                           
                           
Domain:        1                  
Function:        Fourier Spectrum                  
                           
InputRange:         8.5304914740e+002                  
                           
                           
MultiBufferName:        Input                  
NBW:         1.5000000000e+000                  
                           
OverlapFailed:        False                  
                           
Power:        False                  
PowerUnit:        Pa^2                  
Ratio:        False                  
RecordLength:         1.0000000000e+000                  
                           
Ref_Signal:        Signal 1                  
                           
                           
                           
                           
                           
Signal:        Signal 1                  
                           
SignalUnit:        Pa                  
                           
                           
                           
Title:        Fourier Spectrum(Signal 1) - Input                  
Title1:        Working : Input : Input : FFT Analyzer                  
                           
                           
Weight:        0                  
ZoomOn:        False                  
                           
TemplateName:        Working                  
MeasurementName:        Input                  
MeasurementSlice:        False                  
                           
                           
                           
EnvelopeOn:        False                  
                           
                           
                           
Z-index:                 1         
Date:                 '2012-11-01'         
Time:                 '14:25:27.624'         
Relative time:                  0.00000e+000         
Z-axis:                  0.0000000000e+000         
1         0.0000000000e+000        -2.69714e-005         0.00000e+000
程序比较复杂,在一楼所示程序内容这段上面还有一段是不规则的数据,如上所示,而且txt文本中内容很多,txt文本大小就有56M多了,可想而知。
另外我用你的程序运行语句:
[a(:,1),a(:,2),a(:,3),a(:,4)]=textread('X1_X2_45cm.txt');  %读入数据,假设你的数据文件名为ddt.txt。
matlab运行不下去了,提示错误为:
??? Error using ==> dataread
Trouble reading number from file (row 1, field 1) ==> Header Size:         79                  \n

Error in ==> textread at 176
[varargout{1:nlhs}]=dataread('file',varargin{:});
所以你编的程序不能应用于我的含有复杂内容的txt文件数据提取,只适合含有规则数据内容的数据提取,不过还是谢谢你的回答!
一勤天下无难事,处世无难忍最高。
5楼2012-11-03 09:32:34
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

jiangdonal

铁虫 (初入文坛)

【答案】应助回帖

★ ★
感谢参与,应助指数 +1
xiegangmai: 金币+1, 谢谢建议 2012-11-04 19:23:14
mei3014: 金币+1, 有帮助, 谢谢回帖 2012-11-07 13:07:53
用fgetl这种比较底层一点的函数,一行一行读取文件,搜索到你需要的就可以了
6楼2012-11-03 11:25:35
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

mei3014

金虫 (正式写手)

木有头屑

引用回帖:
6楼: Originally posted by jiangdonal at 2012-11-03 11:25:35
用fgetl这种比较底层一点的函数,一行一行读取文件,搜索到你需要的就可以了

一行行读?50多M,太费时间!
一勤天下无难事,处世无难忍最高。
7楼2012-11-03 12:23:31
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

csgt0

荣誉版主 (著名写手)

彩色挂图

【答案】应助回帖


xiegangmai: 金币+1, 谢谢参与 2012-11-07 20:30:35
你还是用excel弄一下更快
showmethemoney
8楼2012-11-06 10:43:16
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

shcnxjy

金虫 (小有名气)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★
mei3014: 金币+5, 有帮助, 谢谢回帖,不过你这textread用的不对,在我这读不出来! 2012-11-07 13:04:45
xiegangmai: 金币+2, 谢谢参与 2012-11-07 20:30:46
textread函数的功能是十分强大的,如果没记错的话(具体用法请参考matlab帮助文件)
[data1,data2,data3,data4]=textread('X1_X2_45cm.txt','%n%n%n%n',N1,'headerlines',N2);
就可以跳过开头的N2行,而N1表示重复该读取动作N1次,
这样差不多就可以解决你的文件格式问题了!
9楼2012-11-06 16:36:40
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

satosi

银虫 (初入文坛)

【答案】应助回帖

★ ★ ★
mei3014: 金币+2, 有帮助, 谢谢回帖,最好能有具体程序,用法还是比较复杂的! 2012-11-07 13:06:01
xiegangmai: 金币+1, 谢谢参与 2012-11-07 20:30:53
引用回帖:
9楼: Originally posted by shcnxjy at 2012-11-06 16:36:40
textread函数的功能是十分强大的,如果没记错的话(具体用法请参考matlab帮助文件)
=textread('X1_X2_45cm.txt','%n%n%n%n',N1,'headerlines',N2);
就可以跳过开头的N2行,而N1表示重复该读取动作N1次,
这样差 ...

textread可以试试。还有textscan,这个函数比textread要有一定的优势,尤其是在处理大文件时。楼主不妨都试试。具体用法可以去参考help。
10楼2012-11-07 10:48:52
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 mei3014 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 材料学硕333求调剂 +3 北道巷 2026-03-18 3/150 2026-03-21 18:17 by 学员8dgXkO
[考研] 307求调剂 +3 余意卿 2026-03-18 3/150 2026-03-21 17:31 by ColorlessPI
[考研] 材料与化工(0856)304求 B区 调剂 +3 邱gl 2026-03-21 3/150 2026-03-21 13:47 by lature00
[考研] 求调剂 +6 Mqqqqqq 2026-03-19 6/300 2026-03-21 08:04 by JourneyLucky
[考研] 机械专硕299求调剂至材料 +3 kkcoco25 2026-03-16 4/200 2026-03-21 03:52 by JourneyLucky
[考研] 311求调剂 +5 冬十三 2026-03-18 5/250 2026-03-21 00:16 by JourneyLucky
[考研] 324求调剂 +5 lucky呀呀呀鸭 2026-03-20 5/250 2026-03-20 22:30 by 促天成
[考研] 材料与化工 322求调剂 +4 然11 2026-03-19 4/200 2026-03-20 22:12 by luoyongfeng
[考研] 260求调剂 +3 朱芷琳 2026-03-20 3/150 2026-03-20 20:35 by 学员8dgXkO
[考研] 一志愿南理工085701环境302求调剂院校 +3 葵梓卫队 2026-03-20 3/150 2026-03-20 19:28 by zhukairuo
[考研] 环境工程调剂 +9 大可digkids 2026-03-16 9/450 2026-03-20 17:38 by 醉在风里
[考研] 广西大学家禽遗传育种课题组2026年硕士招生(接收计算机专业调剂) +3 123阿标 2026-03-17 3/150 2026-03-20 15:58 by 飞行琦
[考研] 281求调剂(0805) +14 烟汐忆海 2026-03-16 25/1250 2026-03-20 15:47 by yuncha
[考研] 288求调剂,一志愿华南理工大学071005 +5 ioodiiij 2026-03-17 5/250 2026-03-19 18:22 by zcl123
[考研] 085601材料工程专硕求调剂 +10 慕寒mio 2026-03-16 10/500 2026-03-19 15:26 by 丁丁*
[考研] 0703化学调剂 +5 pupcoco 2026-03-17 8/400 2026-03-19 13:58 by houyaoxu
[考研] 085600材料与化工求调剂 +6 绪幸与子 2026-03-17 6/300 2026-03-19 13:27 by houyaoxu
[考研] 一志愿985,本科211,0817化学工程与技术319求调剂 +10 Liwangman 2026-03-15 10/500 2026-03-19 10:25 by 无际的草原
[论文投稿] 有没有大佬发小论文能带我个二作 +3 增锐漏人 2026-03-17 4/200 2026-03-17 09:26 by xs74101122
[考研] 11408 一志愿西电,277分求调剂 +3 zhouzhen654 2026-03-16 3/150 2026-03-17 07:03 by laoshidan
信息提示
请填处理意见