如何一次为几个向量分配一个矩阵?
问题描述:
我注意到,如果我们想将一个向量赋值给几个变量,我们可以使用'deal';但是当将一个矩阵分配给几个向量时,它不起作用。例如如何一次为几个向量分配一个矩阵?
A=[1 2; 3 4];
A=num2cell(A);
[a, b]=deal(A{:})
它给出了一个错误信息"Error using deal (line 38) The number of outputs should match the number of inputs."
你知道如何改进代码?谢谢!!
答
你可以非常伊斯利编写自己的交易:
# in mydeal.m
function varargout = mydeal(varargin)
% Assign values in vector into variables.
%
% EXAMPLE 1
% [a,b,c] = mydeal([1,2,3]);
% EXAMPLE 2
% some_vector = [1,2,3];
% [a,b,c] = mydeal(some_vector);
%
% %results in a=1, b=2, c=3;
%
assert(nargout == size(varargin{1}, 2), 'Different number of in and out arguments');
for i = 1:nargout
varargout{i} = varargin{1}(:, i);
end
例如:
>> [a,b] = mydeal([1 2; 3 4])
a =
1
3
b =
2
4
或者
>> [a,b, c] = mydeal([1 2 3])
a =
1
b =
2
c =
3
答
你几乎得到了解决,但你的代码分裂阿成具有标量元素的2x2单元格。使用的num2dell
第二个输入参数分裂成列向量:
A=[1 2; 3 4];
A=num2cell(A,1);
[a, b]=deal(A{:})
尝试编辑你的答案提供有关环境,编程语言等详细信息,如写有没有很多有用的信息,可以用于帮你。 – par 2014-11-06 23:08:30