我有m个向量,每个向量的元数不相同,现在需要求从每个向量中各取一个元数的组合,怎么才能用matlab求出
来源:学生作业帮 编辑:神马作文网作业帮 分类:综合作业 时间:2024/11/12 23:14:08
我有m个向量,每个向量的元数不相同,现在需要求从每个向量中各取一个元数的组合,怎么才能用matlab求出
例:a=[1 2 3 4;1 3 5 ;2 4 5 6 7],需要从这三个维度不同的向量中各取一个元素的组合.
例:a=[1 2 3 4;1 3 5 ;2 4 5 6 7],需要从这三个维度不同的向量中各取一个元素的组合.
% 下面的函数可以实现.
>>[S,lt,n] = combine(a(:,1),a(:,2),a(:,3)); % 或者
>>[S,lt,n] = combine(a(1,:),a(2,:),a(3,:)); % 也可以改改代码实现 combine(a)
function [S,lt,n] = combine(varargin)
% N 组向量各取一值的组合
% 输出:S 结果矩阵;lt 每个参数的长度;n 结果总数
S=[];m=nargin; % 参数个数,没有参数退出
if m==0; return; end;
lt = arrayfun(@(m) length(varargin{m}),1:m); % 统计每个参数的长度
n = prod(lt); % 得到结果总数
if n==0; return; end; % 有空参数
for k=m:-1:1 % 从后往前取参数生成结果列
r=[];
l=lt(k); % 当前参数长度
j=1;
for p=(k+1):m
j=j*lt(p); % 当前参数中每个元素的重复次数
end
tm=n/(j*l); % 当前参数循环次数
for p=1:tm % 循环 tm 读取 varargin{k}
for h=1:l % 顺序读取 varargin{k}
for g=1:j % 每个元素重复 j 次
r=[r;varargin{k}(h)];
end
end
end
S=[r S];
end
>>[S,lt,n] = combine(a(:,1),a(:,2),a(:,3)); % 或者
>>[S,lt,n] = combine(a(1,:),a(2,:),a(3,:)); % 也可以改改代码实现 combine(a)
function [S,lt,n] = combine(varargin)
% N 组向量各取一值的组合
% 输出:S 结果矩阵;lt 每个参数的长度;n 结果总数
S=[];m=nargin; % 参数个数,没有参数退出
if m==0; return; end;
lt = arrayfun(@(m) length(varargin{m}),1:m); % 统计每个参数的长度
n = prod(lt); % 得到结果总数
if n==0; return; end; % 有空参数
for k=m:-1:1 % 从后往前取参数生成结果列
r=[];
l=lt(k); % 当前参数长度
j=1;
for p=(k+1):m
j=j*lt(p); % 当前参数中每个元素的重复次数
end
tm=n/(j*l); % 当前参数循环次数
for p=1:tm % 循环 tm 读取 varargin{k}
for h=1:l % 顺序读取 varargin{k}
for g=1:j % 每个元素重复 j 次
r=[r;varargin{k}(h)];
end
end
end
S=[r S];
end
我有m个向量,每个向量的元数不相同,现在需要求从每个向量中各取一个元数的组合,怎么才能用matlab求出
matlab 怎样定义一个数组,它的每个元素是一个向量,且向量长度不等?
怎么向量才算相等 向量平行需要2个向量的长度一样吗
matlab找出一个行向量中相同的数
matlab中统计向量中有几个相同的数
在matlab的一个循环中,对一个向量中的每个元素平方求平方,再求和,然后再开方,
matlab中怎么把一个行向量保存到一个矩阵的任意一行?我现在有K个行向量,想依次保存在一个矩阵中怎么办?
排列组合:给定n个相同的集合,每个集合中有m个元素,从每个集合中任意选一元素,这些元素的组合数是多少
非零向量组 是指只要至少含有一个非零向量的向量组 还是向量组中的每个向量都不能为零向量呢
在Matlab 中怎么求一个列向量的逆
MATLAB,现在有一个向量A,含有m个元素,还有一个矩阵B,
什么叫做向量的线性组合,怎么个组合法?