声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1657|回复: 6

[编程技巧] 问一个load数据文本的问题,急!

[复制链接]
发表于 2007-4-12 17:35 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
正在写程序处理实验数据,使用load命令加载文本数据,但是遇到的问题是,数据文本的第一行是每列的标签文字,从第二列才是需要的数据,应该怎么办?:'( 谢谢各位了。下面是我的数据文本内容
X [#]     Y [#]        X [pix]        Y [pix]        Distance [pix]        Distance [mm]   U [m/s]
63        0        1024        16        0        0        -2.76336       
63        1        1024        32        16        1.19383        -2.99523       
63        2        1024        48        32        2.38765        -3.00711       
63        3        1024        64        48        3.58148        -3.01009       
63        4        1024        80        64        4.77531        -2.79225       
63        5        1024        96        80        5.96914        -2.47107       
63        6        1024        112        96        7.16296        -2.17618       
63        7        1024        128        112        8.35679        -2.23017       
63        8        1024        144        128        9.55062        -2.61698       
63        9        1024        160        144        10.7444        -2.9207       
。。。。。。
回复
分享到:

使用道具 举报

发表于 2007-4-12 17:45 | 显示全部楼层
转存以下

function [filename1] = adjustline(filename,p,m,n)
%p为头信息行数,m为数据行数,n为间隔信息行数(这里,p=1,m=inf,n=0)

fid  = fopen(filename,'r');
filename1 = [filename(1:end-4),'_modified','.txt'];
fid1  = fopen(filename1,'w');
for ii=1:p,
    dataline1 = fgetl(fid);
    if ~ischar(dataline1),
        fclose(fid);
        fclose(fid1);
        return;
    end
end
while 1  
    for ii=1:m,
        dataline1 = fgetl(fid);
        if ~ischar(dataline1),
            fclose(fid);
            fclose(fid1);
            return;  
        end
        fprintf(fid1,'%s \n',dataline1);
    end
    for ii=1:n,
        dataline1 = fgetl(fid);
        if ~ischar(dataline1),
            fclose(fid);
            fclose(fid1);
            return;
        end
    end
end
return
 楼主| 发表于 2007-4-12 18:01 | 显示全部楼层
谢谢先,再认真看!
没有简单的方法吗?这个转换要很长时间,不能在load的时候就从第二行开始吗?谢谢!

[ 本帖最后由 ChaChing 于 2009-7-3 22:29 编辑 ]
发表于 2007-4-12 23:13 | 显示全部楼层
呵呵,我这函数主要是对sysnoise或者ansys输出文本操作的。如果你的文件只有第一行是不需要的数据,那你就从写字板打开、删除算了,哈哈。
发表于 2007-4-13 10:04 | 显示全部楼层

回复 #5 w89986581 的帖子

我遇到此类情况时候我先用一个矩阵解决,让后在赋变量。
A=[63        0        1024        16        0        0        -2.76336        
63        1        1024        32        16        1.19383        -2.99523        
63        2        1024        48        32        2.38765        -3.00711        
63        3        1024        64        48        3.58148        -3.01009        
63        4        1024        80        64        4.77531        -2.79225        
63        5        1024        96        80        5.96914        -2.47107        
63        6        1024        112        96        7.16296        -2.17618        
63        7        1024        128        112        8.35679        -2.23017        
63        8        1024        144        128        9.55062        -2.61698        
63        9        1024        160        144        10.7444        -2.9207      ]
save A
然后我用.m文件引用变量
load A.mat
X [#]=A[:,1];
Y [#]=A[:,2];
X [pix]=A[:,3];
等等依次类推。
发表于 2007-4-13 14:08 | 显示全部楼层
http://forum.vibunion.com/forum/viewthread.php?tid=2029推荐你去看看这个帖子,讲的很明白。

评分

1

查看全部评分

发表于 2011-7-31 10:38 | 显示全部楼层
用textread 可以跳过第一行数据啊
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-13 14:28 , Processed in 0.065817 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表