【问题标题】:How to load a cell array that has both strings and numbers?如何加载同时包含字符串和数字的元胞数组?
【发布时间】:2015-10-21 09:45:51
【问题描述】:

我有一个包含字符串和数字的元胞数组。我想加载单元格数组的所有元素。同样,我使用了以下方法:

load(filename);

此命令仅加载字符串并排除具有数字的列。基本上,由于我的文件不是.mat 扩展名,因此它将其视为ASCII 文件并仅加载文本。

我试过importdata(filename)。但这给了我1*1 的结构。我需要将元素导入到另一个相同维度的单元格数组中。

有没有办法加载所有的值?

【问题讨论】:

  • load 用于加载.mat 文件,正如您在问题中所指出的那样。查看textscan 的帮助,看看是否会更好。
  • 这个帖子的接受回答有很大的作用stackoverflow.com/questions/4747834/…

标签: matlab load cell-array


【解决方案1】:

load 用于导入带有工作区变量的.mat-文件。由于您的数据不是实际的.mat-文件,因此您需要使用不同的方法。

假设您有文件filename,其中包含制表符分隔的数据:

str1    1
str2    2
str3    3
str4    4

要获得一个单元数组,其中第一列是字符串(使用%s),第二列是双精度(使用%f),您可以使用textscan。看看结果,也许它已经是你要找的了。

filename = 'data';
F = fopen(filename, 'r');
data = textscan(F, '%s %f', 'Delimiter', '\t');

如果没有,您可以创建一个元胞数组CA,其中第一列是字符串(使用cellstr),第二列是双精度(使用num2cell)。

CA = cell(size(data{1},1),2);
CA(:,1) = cellstr(data{1});
CA(:,2) = num2cell(data{2});

结果:

CA = 
    'str1'    [1]
    'str2'    [2]
    'str3'    [3]
    'str4'    [4]

【讨论】:

    猜你喜欢
    • 2011-02-27
    • 1970-01-01
    • 1970-01-01
    • 2015-04-23
    • 1970-01-01
    • 2017-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多