所以我有一个.m文件,它给我每毫秒128x14,我调用它并创建它的对象“h”。所以现在我得到这个警告,当我跳过class1,class11,class2,class22,class3,class33,class4和class44它要求我为他们预分配内存,所以我尝试搜索该选项并得到了这个。这是一个GUI应用程序。
class1(:,:,samples_output) = zeros(128, 14, size(x));
我将上面的代码放在“y”下,但是当我运行它时我得到了这个错误
Subscripted assignment dimension mismatch.
Error in training>start_training_Callback (line
97)
class1(:,:,samples_output) = zeros(128, 14,
size(x));
Error in gui_mainfcn (line 96)
feval(varargin{:});
Error in training (line 42)
gui_mainfcn(gui_State, varargin{:});
Error in
@(hObject,eventdata)training('start_training_Callback',hObject,eventdata,guidata(hObject))
Error while evaluating uicontrol Callback
这是代码
x = [0;1;0;-1];
y = [1;0;-1;0];
h = EmotivEEG;
h.Run;
for k = 1:samples_output
location={};
s=cell(1,4);
for a = 1:4
location{1} = sprintf('UP');
location{2} = sprintf('RIGHT');
location{3} = sprintf('DOWN');
location{4} = sprintf('LEFT');
n = location{a};
s(a)=strread(sprintf(n),'%s','delimiter','');
end
set(handles.viewer_training,'YTick',[]);
set(handles.viewer_training,'XTick',[]);
scatter(x,y,'filled')
text((x-.1),(y+.2),s,'color',[1,0,0]);
hold on;
for s=1:size(x)
samples_class_text = sprintf('Samples: %s \n Class: %s',num2str(k), num2str(s));
set(handles.current_pos,'String',samples_class_text, 'FontSize', 15);
set(handles.viewer_training,'YTick',[]);
set(handles.viewer_training,'XTick',[]);
scatter(x(s),y(s),400,'MarkerFaceColor',[0 0 0]);
drawnow;
if s == 1
class1(:,:,s) = h.data;
class11(:,:,s) = h.data;
con1 = cat(3, class1(:,:,s), class11(:,:,s));
assignin('base','class1',con1);
elseif s == 2
class2(:,:,s) = h.data;
class22(:,:,s) = h.data;
con2 = cat(3, class2(:,:,s), class22(:,:,s));
assignin('base','class2',con2)
elseif s == 3
class3(:,:,s) = h.data;
class33(:,:,s) = h.data;
con3 = cat(3, class3(:,:,s), class33(:,:,s));
assignin('base','class3',con3)
elseif s == 4
class4(:,:,s) = h.data;
class44(:,:,s) = h.data;
con4 = cat(3, class4(:,:,s), class44(:,:,s));
assignin('base','class4',con4)
end
pause(1);
end
cla;
end
h.delete;
谁能告诉我如何为这些类预分配内存?
提前感谢。
答案 0 :(得分:2)
class1(:,:,samples_output)
索引一个3d矩阵并返回它的2d切片。要预分配完整的3d矩阵,请使用:
class1 = zeros(128, 14, numel(x));