| 查看: 2079 | 回复: 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 |
» 猜你喜欢
有没有人能给点建议
已经有5人回复
假如你的研究生提出不合理要求
已经有12人回复
实验室接单子
已经有7人回复
全日制(定向)博士
已经有5人回复
萌生出自己或许不适合搞科研的想法,现在跑or等等看?
已经有4人回复
Materials Today Chemistry审稿周期
已经有4人回复
参与限项
已经有3人回复
对氯苯硼酸纯化
已经有3人回复
所感
已经有4人回复
要不要辞职读博?
已经有7人回复
» 本主题相关价值贴推荐,对您同样有帮助:
.m文件转换成.p文件
已经有3人回复
关于matlab数据写入txt文件的求助(上次发在计算模拟版,好像发的版不对,重发)
已经有5人回复
Matlab读取多个文件中某一列的最大值然后输出到一个txt中
已经有8人回复
matlab 批处理txt文件(共有459个txt,一个txt中有1560*4个数据)
已经有6人回复
ansys结果数据导出为txt文件,文件大小有限制吗
已经有8人回复
提取数据中的数字
已经有5人回复
用matlab读取TXT文本其中一列的数据!
已经有11人回复
MATLAB 输入输出数据归一化问题
已经有5人回复
matlab模拟OPO转换效率
已经有8人回复
matlab如何提取三维坐标
已经有3人回复
200多个txt文件matlab读取问题
已经有18人回复
怎么实现txt文件中的列数转换
已经有14人回复
matlab中如何把数据保存成.txt格式?
已经有8人回复
MATLAB 数据导入
已经有13人回复
【求助】弱弱的问一下Matlab数据提取的问题
已经有5人回复
【讨论】求助Matlab批量读取和处理一个文件夹里的txt文件
已经有9人回复
【求助】如何把TXT文件转化为矩阵
已经有4人回复
【求助】matlab读取fortran输出的txt文件【已解决】
已经有3人回复

mei3014
金虫 (正式写手)
木有头屑
- 应助: 14 (小学生)
- 金币: 2957.5
- 散金: 274
- 帖子: 541
- 在线: 335小时
- 虫号: 1333109
- 注册: 2011-06-28
- 性别: GG
- 专业: 信号理论与信号处理

2楼2012-11-02 15:35:07
baobiao007
木虫 (职业作家)
中国特色
- 应助: 201 (大学生)
- 金币: 6482.7
- 散金: 557
- 红花: 40
- 帖子: 3050
- 在线: 1009.9小时
- 虫号: 505962
- 注册: 2008-02-18
- 专业: 应用地球物理学

3楼2012-11-02 17:38:09
baobiao007
木虫 (职业作家)
中国特色
- 应助: 201 (大学生)
- 金币: 6482.7
- 散金: 557
- 红花: 40
- 帖子: 3050
- 在线: 1009.9小时
- 虫号: 505962
- 注册: 2008-02-18
- 专业: 应用地球物理学

4楼2012-11-02 17:39:09
mei3014
金虫 (正式写手)
木有头屑
- 应助: 14 (小学生)
- 金币: 2957.5
- 散金: 274
- 帖子: 541
- 在线: 335小时
- 虫号: 1333109
- 注册: 2011-06-28
- 性别: GG
- 专业: 信号理论与信号处理
|
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
jiangdonal
铁虫 (初入文坛)
- 应助: 3 (幼儿园)
- 金币: 13.6
- 帖子: 15
- 在线: 12.3小时
- 虫号: 1556791
- 注册: 2011-12-30
- 性别: GG
- 专业: 力学中的基本问题和方法
6楼2012-11-03 11:25:35
mei3014
金虫 (正式写手)
木有头屑
- 应助: 14 (小学生)
- 金币: 2957.5
- 散金: 274
- 帖子: 541
- 在线: 335小时
- 虫号: 1333109
- 注册: 2011-06-28
- 性别: GG
- 专业: 信号理论与信号处理

7楼2012-11-03 12:23:31

8楼2012-11-06 10:43:16
【答案】应助回帖
★ ★ ★ ★ ★ ★ ★
mei3014: 金币+5, ★有帮助, 谢谢回帖,不过你这textread用的不对,在我这读不出来! 2012-11-07 13:04:45
xiegangmai: 金币+2, 谢谢参与 2012-11-07 20:30:46
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
10楼2012-11-07 10:48:52












回复此楼
; % 此时已把ddt.txt中所有含4000的行都提取出来单独组成了矩阵b
textread可以试试。还有textscan,这个函数比textread要有一定的优势,尤其是在处理大文件时。楼主不妨都试试。具体用法可以去参考help。