【问题标题】:Importing .txt file in Matlab containing integers of 21 digits在 Matlab 中导入包含 21 位整数的 .txt 文件
【发布时间】:2017-02-15 22:24:04
【问题描述】:

我有一个 .txt 文件(名为 B.txt),由整数列表(每个 21 位)组成,分为两列,如下所示(实际上该文件包含更多行):

116374117927631468606 101765416973555767821
112188647432305746617 107727150903234299458
116719211656774388392 100432456209427807893
117421021456205115327 101096322838605097368

我想在 Matlab 中导入这个文件,格式允许我计算每个整数在第二列中重复的次数。

我现在正在做的是

A=importdata('B.txt'); 
A_2=A(:,2);
a = unique(A_2);
out = [a,histc(A_2(:),a)];

问题:有没有更好的方法来执行这项任务?例如,有没有办法从 1 开始“重新标记”所有内容?

特别是,我想知道将那些巨大的整数作为数字导入是否会丢失精度。

【问题讨论】:

    标签: matlab


    【解决方案1】:

    是的,你失去了精确度。试试112188647432305746617==112188647432305746616

    我建议您将数据导入为文本,而不是数字,并使用 VPA。使用相同的示例:

    a=vpa('112188647432305746617');
    b=vpa('112188647432305746616');
    a==b
    

    【讨论】:

    • 谢谢。您能否更准确地说明如何使用您的建议重写我的代码?另外,有没有办法从 1 开始“重新标记”所有内容?
    • @user3285148 用fscanf 读取文件,将字符串放入vpa,然后放入A_2。我不明白您所说的“重新标记”是什么意思
    • 谢谢。当我使用 fscan 时,我应该输入哪个 formatSpec?
    • @user3285148 可以正确读取文件的方法。这应该很容易弄清楚。
    • 好的,谢谢,但它不知道如何使它工作。我插入的 formatSpec 的任何值都为空
    猜你喜欢
    • 2018-12-23
    • 1970-01-01
    • 1970-01-01
    • 2015-03-17
    • 1970-01-01
    • 2011-02-13
    • 2018-04-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多