gpt4 book ai didi

arrays - 在大数组中的小数组中查找单个字符串

转载 作者:行者123 更新时间:2023-12-04 05:40:34 25 4
gpt4 key购买 nike

我在我正在做的一个项目中遇到了一个问题,希望 Matlab 可以为我节省无数时间。
我有一个包含字符串的数组,旁边的列中有一个相应的整数(管道 ID 和长度)。我有大约 7000 个具有相应长度的管道 ID。

如果我有 200 个管道的 ID 作为数组中的字符串,那么是否可以在大数组中找到这 200 个单独的字符串,并让 MATLAB 给我位于 ID 字符串旁边的单元格中的相应管道长度(整数) ?

我试过 ismemberstrmatch但我无法让它工作。

编辑:
包含所有数据的大数组如下所示:

No.      ID                 Length (m)    
1 0-T103-0-T110 52.327
2 0-T104-0-1370 30.4
3 0-T104-0-1410 62.423
4 0-T105-0-T109 46.611
...
7118 0415B-99878 152.242

然后我会有一个与上面相同的形式的较小的数组,但是我会有 200 行而不是 7118 行。

到目前为止我尝试过的:
a = {'0-T103-0-T110', 52.327; '0-T104-0-1370', 30.4; '0-T104-0-1410', 62.423};
ismember(a(:,1), '0-T104-0-1370');
leng = a{ismember(a(:, 1), '0-T104-0-1370'), 2}

这是可行的,但正如您所见,它仅用于在小数组中定位单个字符串。

我已经加载了这样的大数组:
[num, text, raw] = xlsread('Pipelength_ALL.xlsx', 'A1:C7115');

最佳答案

您要使用 ISMEMBER .下面是一个例子:

%# list of all pipe ID's and their length (100 in this example)
pipes = [cellstr(num2str((1:100)','pip%03d')) num2cell(randi(50,[100 1]))];

%# pipeID's of the query (10 here)
x = randperm(100);
p = cellstr(num2str(x(1:10)','pip%03d'));

%# find matching lengths
[~,loc] = ismember(p, pipes(:,1));
len = cell2mat(pipes(loc,2));

结果示例:
>> [p num2cell(len)]
ans =
'pip096' [14]
'pip043' [ 9]
'pip095' [27]
'pip074' [ 6]
'pip001' [ 3]
'pip065' [20]
'pip067' [ 8]
'pip060' [23]
'pip051' [27]
'pip020' [31]

编辑:

使用您发布的数据,代码将是:
pipes = {
'0-T103-0-T110' 52.327
'0-T104-0-1370' 30.4
'0-T104-0-1410' 62.423
'0-T105-0-T109' 46.611
}

p = {
'0-T104-0-1370'
'0-T105-0-T109'
}

[~,loc] = ismember(p, pipes(:,1));
[p pipes(loc,2)]

关于arrays - 在大数组中的小数组中查找单个字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11308987/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com