Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays Matlab cell2mat阵列问题_Arrays_Matlab_Plot - Fatal编程技术网

Arrays Matlab cell2mat阵列问题

Arrays Matlab cell2mat阵列问题,arrays,matlab,plot,Arrays,Matlab,Plot,您好,我一直在尝试生成一些代码来跟踪单个像素的颜色变化。这个想法很简单,但我对使用Matlab还不熟悉,在数组方面遇到了一个问题 我曾尝试将值放入另一个数组,然后更改它们,因为这是其他地方提到的解决方案,但这不是一个简单的一维数组,像素为RGB返回3个不同的数字。cell2mat函数不想工作,但出于某种原因,我不明白为什么。 它不断给出“CELL2MAT不支持包含单元格数组或对象的单元格数组。”错误 以下是我目前掌握的代码: clear clc file = 'myFaceInside4.mp

您好,我一直在尝试生成一些代码来跟踪单个像素的颜色变化。这个想法很简单,但我对使用Matlab还不熟悉,在数组方面遇到了一个问题

我曾尝试将值放入另一个数组,然后更改它们,因为这是其他地方提到的解决方案,但这不是一个简单的一维数组,像素为RGB返回3个不同的数字。cell2mat函数不想工作,但出于某种原因,我不明白为什么。 它不断给出“CELL2MAT不支持包含单元格数组或对象的单元格数组。”错误

以下是我目前掌握的代码:

clear
clc

file = 'myFaceInside4.mp4';

x = 490;
y = 250;

% Read video in
mov=VideoReader(file);

% Split video into frames
vidFrames=read(mov);

duration = mov.Duration;
frame_rate = mov.FrameRate;
total_frames = duration .* frame_rate;

% initialize array
values = {};

for frame = 1:total_frames - 10
    % Get frame
    original = vidFrames(:,:,:,frame);
    
    % Select pixel to get rbg values
    pixel_val = impixel(original,x,y)
    
    values = {values; pixel_val};

end

bb = zeros(1, length(values));         % Initialize new vector to hold converted cells
for i = 1:length(values)               
    for j = 1:3
        
        bb(i, j) = cell2mat(values(i, j));    % Convert them
    end
end

% Plot red values for selected pixel
f = figure; 
p = plot(0:167 , bb(:,1));
p(1).LineWidth = 2;
p(2).Marker = '.';

有什么想法吗?

如果你总是有数字数据,为什么还要使用单元格数组?从一个矩阵开始。。。看起来你也知道循环的大小,所以你应该初始化
values=NaN(total_frames-10,3)
或类似的东西(我们无法运行示例代码,因此很难猜测),然后代替
values={values;pixel_val}只需为数组赋值,即
值(帧:)=pixel\u val
。因为除此之外,您的索引看起来永远不会在
bb
循环中工作-调试并查看
values(i,j)
为您提供了什么,它很可能是一个单元格单元格,正如错误状态所示