я понял, способ сделать это. Благодаря ответу Уилла Робертсона я понял, что написать функцию - единственный способ получить то, что я хочу. Здесь расколото.
function [ o1, o2, o3, o4, o5, o6, o7, o8 ] = split(v)
%SPLIT Splits a vector of bounded length into individual return variables.
% Split() can handle arbitrarily long input vectors, but only a fixed
% number of output variables. @benathon
%
% Usage:
% vec = [1 2 3 4 5];
% [a,b,c,d,e] = split(vec);
% [f,g] = split(vec);
% If you would like to upgrade split() to handle more output variables,
% simply add more output variables to the function definition and
% then change this variable
maxout = 8;
[~,n] = size(v);
if n < nargout
error('input vector too short for number of output arguments');
end
% we only need to assign this many output variables
iterations = min(n,nargout);
% Matlab catches "Too many output arguments." before we can
%if(iterations > maxout)
% error('Too many output, edit split.m to easily upgrade');
%end
i = 1;
while i <= iterations
expression = sprintf('o%d=v(%d);', i, i);
eval(expression);
i = i + 1;
end
Посмотрите комментарии к использованию. Я также сделал суть: https://gist.github.com/esromneb/652fed46ae328b17e104
взглянуть на [ 'varargout'] (http://www.mathworks.com/ help/matlab/ref/varargout.html? refresh = true), а также в ['nargout'] (https://nf.nci.org.au/facilities/software/Matlab/techdoc/ref/nargin.html) – Dan
'size()' является функцией. Поэтому, когда вы выполняете 'size ([0 0])', он входит во внутреннюю функцию и возвращает два аргумента. Во втором случае 'sz' является переменной, которая является вектором длины 2. Теперь вы пытаетесь присвоить одну переменную двум переменным. Этого не произойдет. Вы можете написать свою собственную функцию для этого. –
смотрите здесь для нескольких присваиваний переменных: http://stackoverflow.com/questions/2740704/is-there-anything-like-deal-for-normal-matlab-arrays – zinjaai