В моей программе есть переменная ячейки, которую Matlab предупреждает о ее распределении. Простая форма кода STH так:Почему MATLAB предупреждает о перераспределении переменной, которая получает каждый цикл сброса?
for i = 1:2
a = [];
a = [a,{'abc'}];
end
Прежде всего я хочу знать, почему a
должен быть выделяется заранее, так как он получает сброс в каждом цикле. Во-вторых, я не знаю, как его распределить. Когда я пытаюсь это сделать, Matlab дает мне еще одно предупреждение, говоря: «Переменная, как представляется, предварительно распределена, но предварительное распределение здесь не рекомендуется».
Я использую этот код перед циклом:
a = cell(1,2);
Чтобы быть более конкретным:
for i = 1:2
a = [];
if condition1
a = {'abc'};
end
if condition2
a = [a,{'def'}];
end
b = [{'string'},a];
end
Я хочу b
быть массив 1x1 клеток, если условия не соответствуют действительности, так что мне нужно для сброса a
в пустой var в каждом цикле.
Update:
Я нашел способ, намекают ответ Ли, но до сих пор не знает, почему. Использование a = [a(:),{'def'}];
вместо a = [a,{'def'}];
решило предупреждение.
Спасибо за ответ. Как я добавил в своем вопросе, мне нужно «а», чтобы получить пустую в начале каждого цикла. Поэтому я не могу установить его на {'a1'}. Что еще я могу сделать? Еще раз спасибо. –
Просто замените ваш 'a = []' на 'a = {}' – Lee
Да, правильно. Большое спасибо Ли. –