基于条件查找元胞数组子集的 MATLAB 元胞函数
MATLAB cell function to find cell-array subset based on condition
给定 MATLAB
中 [R G B]
值的元胞数组,我需要找到 sub-cell_array 由满足条件的那些特定元素组成。 (使用单元格函数)。
我在想:
subset = cellfun(@(x) condition(x), superset, 'UniformOutput',false);
但是,如预期的那样,满足条件的元素为 1,否则为 0。但我需要一个子集,由 condition == 1
的那些元素组成。
请提出建议。
% Example Data
superset = {
[0.983 0.711 0.000];
[1.000 0.020 0.668];
[0.237 1.000 1.000];
[0.245 0.707 0.544];
[0.000 0.000 0.000]
};
% Example Condition: RGB is Pure Black
subset_idx = cell2mat(cellfun(@(x) all(x == 0),superset,'UniformOutput',false));
% Subset Extraction
subset = superset(subset_idx);
让您避免循环遍历每个元胞数组元素的替代方法:
% Example Data
superset = {
[0.983 0.711 0.000];
[1.000 0.020 0.668];
[0.237 1.000 1.000];
[0.245 0.707 0.544];
[0.000 0.000 0.000]
};
% Convert Cell Array of Vectors to Matrix
superset = cell2mat(superset);
% Example Condition: G and B Greater Than 0.5
subset_idx = (superset(:,2) > 0.5) & (superset(:,3) > 0.5);
% Subset Extraction
subset = superset(subset_idx,:);
无论您喜欢哪种方法,对数据的每一行应用条件都会生成一个逻辑值行向量,其大小等于数据中的行数。因此,您需要应用索引以便从集合 subset = superset(subset_idx,:)
.
中提取一个子集
给定 MATLAB
中 [R G B]
值的元胞数组,我需要找到 sub-cell_array 由满足条件的那些特定元素组成。 (使用单元格函数)。
我在想:
subset = cellfun(@(x) condition(x), superset, 'UniformOutput',false);
但是,如预期的那样,满足条件的元素为 1,否则为 0。但我需要一个子集,由 condition == 1
的那些元素组成。
请提出建议。
% Example Data
superset = {
[0.983 0.711 0.000];
[1.000 0.020 0.668];
[0.237 1.000 1.000];
[0.245 0.707 0.544];
[0.000 0.000 0.000]
};
% Example Condition: RGB is Pure Black
subset_idx = cell2mat(cellfun(@(x) all(x == 0),superset,'UniformOutput',false));
% Subset Extraction
subset = superset(subset_idx);
让您避免循环遍历每个元胞数组元素的替代方法:
% Example Data
superset = {
[0.983 0.711 0.000];
[1.000 0.020 0.668];
[0.237 1.000 1.000];
[0.245 0.707 0.544];
[0.000 0.000 0.000]
};
% Convert Cell Array of Vectors to Matrix
superset = cell2mat(superset);
% Example Condition: G and B Greater Than 0.5
subset_idx = (superset(:,2) > 0.5) & (superset(:,3) > 0.5);
% Subset Extraction
subset = superset(subset_idx,:);
无论您喜欢哪种方法,对数据的每一行应用条件都会生成一个逻辑值行向量,其大小等于数据中的行数。因此,您需要应用索引以便从集合 subset = superset(subset_idx,:)
.