【问题标题】:Delete string and double redundancy in cell of matlab删除matlab单元格中的字符串和双冗余
【发布时间】:2015-09-16 08:32:06
【问题描述】:

我有一个包含两列的元胞数组。一个由字符串组成,另一个由双打组成。我想删除所有多余的行。

b = cell(4,2);
b{1,1} = 'a';
b{1,2} = 2;
b{2,1} = 'a';
b{2,2} = 1;
b{3,1} = 'b';
b{3,2} = 1;
b{4,1} = 'a';
b{4,2} = 2;

这样在行上方的列表中,a 2 将被删除。排序也很好。我找到了“独特”功能,它告诉我它只适用于所有字符串单元格。混合细胞还有其他功能吗?

最好的问候 曼努埃尔

【问题讨论】:

  • 您可以将您的双精度合并到字符串中,使用唯一的,然后再次将它们分开,因为您的字符串不包含数字,这应该很容易做到。您也可以在它们组合时进行排序。
  • 谢谢。我是这样做的,它奏效了
  • 考虑发布答案,以便有相同问题的人找到答案!
  • @Manuel 我建议您发布自己的解决方案作为答案,以便将来对其他人有所帮助。
  • 我认为这个mathworks.com/matlabcentral/fileexchange/…有文件交换

标签: string matlab double redundancy


【解决方案1】:

感谢我的帮助,这就是答案。将双精度数转换为字符串,合并两个字符串,唯一,再分开再将字符串转换成双精度:

b = cell(4,2);
b{1,1} = 'a';
b{1,2} = 2;
b{2,1} = 'a';
b{2,2} = 1;
b{3,1} = 'b';
b{3,2} = 1;
b{4,1} = 'a';
b{4,2} = 2;
b

btemp = {};
for i = 1:size(b)   
    [~,columns]=size(btemp);
    btemp{columns+1} = strcat(b{i,1},sprintf('%.3f',b{i,2}));
end
btemp = unique(btemp);
[~,columns]=size(btemp);

b2 = cell(columns,2);
for j = 1:columns
    b2{j,1} = btemp{j}(1);
    b2{j,2} = str2double(btemp{j}(2:end));
end

b2

【讨论】:

    猜你喜欢
    • 2019-05-24
    • 1970-01-01
    • 2013-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-12
    • 2018-12-03
    • 2018-12-20
    相关资源
    最近更新 更多