将字符与MATLAB进行比较

时间:2015-02-19 12:52:59

标签: matlab

[status ,list] = system(cmd)

这给出了:

status = 
0 

list = 
RED
GREEN
BLUE
WHITE
type of list is 1x420 char

>>results = getListFromBlock(myFile)

results = 
RED
GREEN
BLUE
WHITE

results type 4x19 char

我想检查该列表并且结果是相同的,但是比较失败,因为变量没有相同的类型。 我如何转换每一个才能进行比较?

由于

1 个答案:

答案 0 :(得分:0)

对于results,最简单的选择是利用regexp()调用将一个长字符串分解为单元格数组并丢弃空格。有关如何设置表达式的信息,请参阅the documentation

对于list,您可以使用cellstr()将字符数组分解为单元格数组并自动删除空白填充。因为MATLAB数组需要是矩形的,如果想要一个包含多行的字符数组,每行需要具有相同数量的字符,因此需要填充空格。

% Generate the sorta really important sample data to work with
list = 'RED     ORANGE   YELLOW     GREEN     BLUE      INDIGO   VIOLET';
results = ['RED    '; ...
           'ORANGE '; ...
           'YELLOW '; ...
           'GREEN  '; ...
           'BLUE   '; ...
           'INDIGO '; ...
           'VIOLET '  ...
           ];

% Return cell array of groupings of non-whitespace chars(s), length >=1
results_cell = regexp(list, '\S{1,}', 'Match'); 

% Convert list into a cell array, strips whitespace padding
% Transpose to the same shape as results_cell
list_cell = cellstr(results).';

如果我们查看whos,我们会将统一格式的数据用于比较。

>> whos
  Name             Size            Bytes  Class    Attributes

  list             1x63              126  char               
  list_cell        1x7               856  cell               
  results          7x7                98  char               
  results_cell     1x7               856  cell