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