小编Ass*_*vne的帖子

使用end来增长数组时出现意外行为

从图像目录构建视频数组时遇到意外行为.原始代码:

vid = [];
for i =startframe:endframe
    image = [directoryOfImages ,'\', images_names{1,i}];
    vid(:,:,:,end+1) = imread(image);
    waitbar((i-startframe) / (endframe-startframe));
end
Run Code Online (Sandbox Code Playgroud)

然后我运行此代码来检查事物:

a = []; size(a)
a(end+1) = 1; size(a)
Run Code Online (Sandbox Code Playgroud)

第一个尺寸是[0, 0],第二个尺寸是[1, 1].我在这段代码中得到的预期行为相同:

b = []; size(b)
b(:,end+1) = 1; size(b)
Run Code Online (Sandbox Code Playgroud)

第一个尺寸是[0, 0],第二个尺寸是[1, 1].但在这段代码中,发生了一些奇怪的事情:

c = []; size(c)
c(:,:,end+1) = 1; size(c)
Run Code Online (Sandbox Code Playgroud)

而这里的第一个尺寸是[0,0],第二个是[1,1,2].这是非常意外的.我打印了c,我得到了这个:

>>c
c(:,:,1) =

     0

c(:,:,2) =

     1
Run Code Online (Sandbox Code Playgroud)

最后,我运行了这个脚本:

c=[]; c(:,:,end)=1; size(c)
Run Code Online (Sandbox Code Playgroud)

和我[1, 1]. …

arrays matlab

6
推荐指数
1
解决办法
55
查看次数

标签 统计

arrays ×1

matlab ×1