如果我有 2 个单元格数组,1 个包含用户名,另一个包含坐标。第一个名字怎么能等于第一个坐标等等?



如果我在 matlab 中有 2 个单元格数组,一个包含用户名,另一个包含坐标,如何使名字等于第一个坐标,依此类推? 例如,我想要user1=[xR1 yR1],....,user50=[xR50 yR50],所以当我想使用坐标[xR1 yR1]时,我调用user1。那么如何做到这一点呢?这是 2 个单元格数组的代码

user = cell(50,50);
name=cell(size(user,2),1);
 for i=1:size(user,2)
           name{i}=['user ',num2str(i)];
 end
users = cell(50, 1);

for i=1:50
users{i} =[xR(i) yR(i)];
end

你可以这样做

sz = 50;
user = cell(sz, 1);
name = cell(sz, 1);
for i=1:sz
    name{i} = ['user_', num2str(i)];
    user{i} = rand(1, 2);
end
for i=1:sz
    eval([name{i} '= user{i}']);
end

我会避免用 50 个这样的变量弄乱工作区。我宁愿有一个以字段名称为User IDsstruct.以下代码是5此类用户 ID 的演示,您可以将其扩展到50 -

%%// X-Y Coordinates
coords = randi(5,5,2); %%// random data
%%// User IDs
user_ids = cell(size(coords,1),1);
for i=1:size(coords,1)
    user_ids{i}=['user',num2str(i)];
end
%%// Combined cell array to store X-Y coordinates and User IDs
all_data = cell2struct(num2cell(coords), user_ids, 1);

使用方法:如果要访问user4数据,请使用此 - vertcat(all_data.user4)'

最新更新