【问题标题】:Matlab: cell to matrix rowMatlab:单元格到矩阵行
【发布时间】:2014-12-13 08:43:31
【问题描述】:

我正在尝试将文本文件(逗号分隔值)转换为 MATLAB 中的矩阵。我已经能够将各个行提取到单元格数组中,但我无法将这些值转换为矩阵形式。读取文件行得到的7X1单元格为row major,值如下

line = 
      '123'
      ''
      '"Foo"'
      [1X27 char]
      '1.01'
      '2.02'
      '0'

因此,该文件基本上是类似行的集合。关于如何将这些行转换为矩阵形式的任何建议?任何帮助将不胜感激。

【问题讨论】:

  • 是的,我希望输出格式为 row=[123 Foo [1X27 char] 1.01 2.02 0]

标签: matlab matrix cell readfile


【解决方案1】:

您可以使用cell2mat 函数从您的单元格中创建一个矩阵(有关详细信息,请参阅MATLAB help page)。由于您的单元格是列向量并且您需要行向量,因此您必须先转置单元格。

row = cell2mat(line.');

如果您想在所有元素之间添加一个空格,可以使用以下方法:

% Remove all empty fields
line = line(~cellfun(@isempty,line));

% Add a space after each element
line = strcat(line,{' '});

% Now call cell2mat
row = cell2mat(line.');

% and remove space at end
row = strtrim(row);

您可以使用regexpi 查找引号并将其删除。

row = row(regexpi(row,'"')) = '';

【讨论】:

  • 我之前尝试过这样做,但它会将输出生成为字符串 '123"Foo"abcdefghijklmnopqrstuvwxyza1.012.020',这不是必需的格式。
  • 所以你需要所有条目之间的空格?而不是 char 数组的内容,您需要文本 '[1x27 char]'?
  • 不,我需要矩阵中的所有条目以及 [1x27 char] 中的文本,而不是 '[1x27 char]'。
  • 编辑后的答案确实在字段之间添加了空格,但答案仍然是一个字符串。我尝试使用 strread 和 textscan 提取字符串的元素,但我想在我的情况下,由于 [1x27 char] 中没有模式,我不能使用你的答案。 :(
  • 在 MATLAB 中,字符串是一个字符数组。所以你确实有一个矩阵形式。之后你想用row 做什么?也许那样我可以更好地帮助你。
猜你喜欢
  • 1970-01-01
  • 2011-12-12
  • 1970-01-01
  • 1970-01-01
  • 2023-04-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多