查找和替换元胞数组中的值

Posted

技术标签:

【中文标题】查找和替换元胞数组中的值【英文标题】:find and replace values in cell array 【发布时间】:2011-07-25 05:28:15 【问题描述】:

我有一个像这样的单元格数组:[...

0 129 8...2...3...4 6...4 0

我只是想查找和替换特定的值,但我不能使用普通函数,因为单元格的长度不同。我需要同时替换许多特定的值,并且没有关于如何替换值的通用功能。但是,有时应将多个输入值替换为相同的输出。

所以我想说 对于值 1:129 '如果为 0,则为 9' 'elseif 1 然后 50' 'elseif 2 或 3 或 4 然后 61' 等等...高达 129

这些规则适用于整个数组。

我已经尝试自己解决了,但仍然无济于事。请帮忙!

【问题讨论】:

【参考方案1】:

由于您的值似乎跨越了 0 到 129 的范围,因此一种解决方案是向这些值添加 1(因此它们跨越 1 到 130 的范围)并将它们用作替换值向量的索引。然后您可以使用函数CELLFUN 将此操作应用于每个单元格。例如:

>> C = 0, 129, [8 2 3 4], [6 4], 0;  %# The sample cell array you give above
>> replacement = [9 50 61 61 61 100.*ones(1,125)];  %# A 1-by-130 array of
                                                    %# replacement values (I
                                                    %# added 125 dummy values)
>> C = cellfun(@(v) replacement(v+1),C);  %# Perform the replacement
>> C:  %# Display the contents of C
ans =
     9

ans =
   100

ans =
   100    61    61    61

ans =
   100    61

ans =
     9

【讨论】:

以上是关于查找和替换元胞数组中的值的主要内容,如果未能解决你的问题,请参考以下文章

matlab中如何寻找字符串在元胞数组中的位置?

使用数组 VBA 查找和替换数据库中的值

matlab中的元胞数组如何实现批量的赋值呢?

使用猫鼬模式将多个选择元素值中的值存储到MongoDB中的数组中

尝试从数组中的值中删除基于 MKMap 的引脚

MATLAB的cell数组