【问题标题】:Error using horzcat - textscan - import to matlab使用 horzcat 时出错 - textscan - 导入到 matlab
【发布时间】:2016-05-16 18:35:11
【问题描述】:

我想导入到 matlab 的 csv 文件中有大表。 我的数据是这样的

2015-08-19 13:07:06,2015-08-20 00:00:00,0,0,2,2,97,74089906202417,96140046618,117409555595550,2,0,1

我尝试使用:

dataArray = textscan(fileID, '%{yyyy-MM-dd hh:mm:ss}D%{yyyy-MM-dd hh:mm:ss}D%u%u%u%u%d%u64%u64%u64%u%u64%u', 'Delimiter', ',', 'WhiteSpace', '',  'ReturnOnError',  false);
fclose(fileID);
a = [dataArray{1:end}];
clearvars

但是由于数据类型不匹配,它不起作用,这个错误

使用 horzcat 时出错 被连接的矩阵的维度不一致。 a = [dataArray{1:end}] 中的错误;

现在谁能告诉我如何导入这些数据??? (正确导入日期时间列对我来说非常重要)

注意:我尝试了以下所有格式,但仍然有错误。

  • 'datenum(%D)datenum(%D)%u%u%u%u%d%u64%u64%u64%u%u64%u';
  • '%s%s%u%u%u%u%d%u64%u64%u64%u%u64%u';
  • ' %f64 %f64 %f64%f64%f64%f64%f64%f64%f64%f64%f64%f64%f64'
  • ' %s %s %f64%f64%f64%f64%f64%f64%f64%f64%f64%f64%f64'

【问题讨论】:

  • 你能提供一些dataArray中的数据样本吗?那么dataArray{1}dataArray{2}...等输出什么?

标签: matlab csv


【解决方案1】:

下面提供了更正的代码。在代码中,如果不需要,您不必存储到数组中。您可以像这样dataArray{2}(5) 访问dataArray 中的每个元素,在这种情况下,您将在csv 文件中的5th line 中获得second date and time

我用%s 代替%u64 代替74089906202417,96140046618,117409555595550 因为

74089906202417 将适合 %u64

96140046618 将适合 %u64

117409555595550 不适合 117409555595550

考虑到其他两个也可能不适合 csv 文件的其他行,我对所有三个都使用了%s。您可以根据自己的数据进行更改。

fileID = fopen('data.csv');
dataArray = textscan(fileID,'%s %s %u %u %u %u %d %s %s %s %u %u %u','Delimiter',',');
fclose(fileID);

% Storing to array
dateTime1 = cell2mat(dataArray{1});
dateTime2 = cell2mat(dataArray{2});
uinteger1=dataArray{3};
uinteger2=dataArray{4};
uinteger3=dataArray{5};
uinteger4=dataArray{6};
integer1=dataArray{7};
string1=cell2mat(dataArray{8});
string2=cell2mat(dataArray{9});
string3=cell2mat(dataArray{10});
uinteger5=dataArray{11};
uinteger6=dataArray{12};
uinteger7=dataArray{13};

【讨论】:

    猜你喜欢
    • 2014-01-26
    • 2021-11-22
    • 1970-01-01
    • 2017-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多