MATLAB提取元胞数组中符合条件的元胞 用户输入条件

clc;
filepath = '..\******\';
dirOutput = dir(fullfile(filepath,'*.ply'));
plyName = {dirOutput.name}';
propmt = 'input the gsigma value\n';
gsigma = input(propmt,'s');
propmt = 'input the tsigma value\n';
tsigma = input(propmt,'s');
expr = ['gsigma_' gsigma '_tsigma_' tsigma];
res = regexp(plyName,expr,'match');
index = ~cellfun('isempty', res);
out = plyName(index);

regexp是正则表达式,能够搜索出匹配的内容,但是由于搜索对象是元胞数组,所以返回的res是和元胞数组同等维度的元胞数组,但仅在搜索对象符合条件处不为空,故借此特点可以提取出符合条件的元胞内容。效果如图所示。

如果需要用户输入数值类型的数据,可以将输入函数修改为如下的形式。

propmt = 'input the tsigma value\n';
gsigma = input(propmt);
clc;clear;
filepath = '..\NoisedPlyFiles\';
dirOutput = dir(fullfile(filepath,'*.ply'));
plyName = {dirOutput.name}';
propmt = 'input the gsigma value\n';
gsigma = input(propmt,'s');
propmt = 'input the tsigma value\n';
tsigma = input(propmt,'s');
expr = ['gsigma_' gsigma '_tsigma_' tsigma];
res = regexp(plyName,expr,'match');
index = ~cellfun('isempty', res);
out = plyName(index);
%这里是为了能让输出的文件名前面有个序号,以便文件太多了无法知道文件名对应的索引是哪个
num = size(out,1);
output = cell(num,1);
for i = 1:num
    output{i} = [int2str(i),'-',out{i}];
end
disp(output);
clear output;
%这里清楚output是因为程序中并没有清空全部,但是每次的output不同,所以这里清空比较好,防止输出上次的信息
promt = 'choose one content to display\n';
index = input(promt);
displayName = out{index};

上面是实现功能的一个完整的程序,后面加入了一段在匹配内容前加索引的代码,目的是能够通过用户输入来选择操作哪个文件,但是文件多了不太好找出索引,所以加了这个索引方便用户选择。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值