从matlab中的特定单元格数据中删除逗号

时间:2017-01-09 07:14:04

标签: matlab

根据图像,我有一个5003×2的单元阵列。

enter image description here

为了能够绘制column1 vs column2,我需要删除column1中的所有结束逗号。

我试图将每个数据转换为字符串并找到逗号 使用'strfind'的位置:

A -> B = !A v B

但每次都会收到此错误:

  

未定义的运算符' - '表示'cell'类型的输入参数。

有没有有效的方法可以做到这一点?

3 个答案:

答案 0 :(得分:2)

又一个单行:

s(:,1) = strrep(s(:,1), ',', '');

答案 1 :(得分:0)

您可以使用str2num将第一列中的字符串转换为数字。例如:

% create an example cell array
s = {'4.28275e-006,', 126.923  ; 
    '4.28043e-006,' , 128.037  ;
    '4.2781e-006,'  , 129.009  ; 
    '4.27578e-006,' , 129.634   };

% extract the two columns
x = str2num([s{:,1}]);
y = [s{:,2}];

% plot
figure;
plot(x, y);

enter image description here

答案 2 :(得分:0)

要从字符串中删除字符,您只需使用字符' indices ...因此,如果您的逗号始终位于字符串的末尾,则可以使用

str = '4.1234e-006,' ;

str(1:length(str)-1) 

>> ans = '4.1234e-006'

要在您的情况下使用它,使用简单的循环可能是最快的

for j = 1:5003

    s{j, 1}( 1 : length(s{j, 1})-1 ) ;

end 

在这种情况下,aksadv使用str2num的答案可能更优雅,但值得注意的是字符串很容易像数组一样索引。