您的位置:首页 > 编程语言 > MATLAB

matlab中cell的用法

2016-05-07 18:36 681 查看
spp-net中的spp_demo中的代码详读:

dets = spp_detect(im, spp_model, spm_im_size, use_gpu);

classes = spp_model.classes;

boxes = cell(length(classes), 1);

thres = -0.5;

for i = 1:length(boxes)

I = dets{i}(:, 5) >= thres;

boxes{i} = dets{i}(I, :);

end

showboxes_new(im, boxes, classes);

看不明白其中cell的用法,用下面的数据尝试了一下:

>> a=cell(8)

初始化为一个8行8列的空cell类型数据

a =

[] [] [] [] [] [] [] []

[] [] [] [] [] [] [] []

[] [] [] [] [] [] [] []

[] [] [] [] [] [] [] []

[] [] [] [] [] [] [] []

[] [] [] [] [] [] [] []

[] [] [] [] [] [] [] []

[] [] [] [] [] [] [] []

>> a{1}=rand(6)

a的1行1列的单元中存储的就是一个随机的6×6的方阵

a =

[6x6 double] [] [] [] [] [] [] []

[] [] [] [] [] [] [] []

[] [] [] [] [] [] [] []

[] [] [] [] [] [] [] []

[] [] [] [] [] [] [] []

[] [] [] [] [] [] [] []

[] [] [] [] [] [] [] []

[] [] [] [] [] [] [] []

>> a{1}

查看a的1行1列的单元值

ans =

0.7577 0.0318 0.3171 0.7952 0.7547 0.4984

0.7431 0.2769 0.9502 0.1869 0.2760 0.9597

0.3922 0.0462 0.0344 0.4898 0.6797 0.3404

0.6555 0.0971 0.4387 0.4456 0.6551 0.5853

0.1712 0.8235 0.3816 0.6463 0.1626 0.2238

0.7060 0.6948 0.7655 0.7094 0.1190 0.7513

>> I = a{1}(:, 5) >= 0.5;

>> I

将a{1}中的第五列值大于等于0.5标记为1,否则标记为0,赋给变量I,I为一个6*1的向量

I =

1

0

1

1

0

0

>> boxes{1} = a{1}(I, :)

将I中为1的那一行向量给boxes{1},I中有三个1,所以就是3*6

boxes =

[3x6 double]

>> boxes{1}

ans =

0.7577 0.0318 0.3171 0.7952 0.7547 0.4984

0.3922 0.0462 0.0344 0.4898 0.6797 0.3404

0.6555 0.0971 0.4387 0.4456 0.6551 0.5853

>>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: