查看: 3919|回复: 7|关注: 0

[已解决] 问一个关于不同矩阵元素全部组合的问题

[复制链接]

新手

6 麦片

财富积分


050


2

主题

6

帖子

0

最佳答案
A = [1 2 3];
B = [2 3];
C = [5 6];
D = [9 10];
E = [11 12];
F = [14,19];
[A,B,C,D,E,F] = ndgrid(A,B,C,D,E,F);
angle_6_axis = [A(:),B(:),C(:),D(:),E(:),F(:)]


通过以上代码可以实现将输入的矩阵元素全部组合,现在需要编一个函数,输入的参数是可变的,最后套用函数以达到上面的效果,我只知道需要用varargin


function result=komb2 (varargin)

[varargin]=ndgrid ( varargin);

result=[varargin(:)];
end

这样写函数不对啊 因为varargin是元胞数组 而现在要输入的是矩阵。哪位大神能指点一下。
回复主题 已获打赏: 0 积分

举报

MATLAB 基础讨论
版块优秀回答者

入门

325 麦片

财富积分


50500


9

主题

914

帖子

69

最佳答案
  • 关注者: 25
发表于 2014-11-15 10:27:28 | 显示全部楼层
用匿名函数非常方便。如下所示。

  1. A = [1 2 3];
  2. B = [2 3];
  3. C = [5 6];
  4. D = [9 10];
  5. E = [11 12];
  6. F = [14,19];
  7. [A,B,C,D,E,F] = ndgrid(A,B,C,D,E,F);
  8. angle_6_axis1 = [A(:),B(:),C(:),D(:),E(:),F(:)];
  9. hf = @(varargin) (cell2mat(varargin));
  10. angle_6_axis2 = hf(A(:),B(:),C(:),D(:),E(:),F(:));
  11. isequal(angle_6_axis1,angle_6_axis2)
复制代码


关注新浪微博:书生一文; 微信:matlabfans; 获取MATLAB混编,文件与数据接口,并行技术图书答疑和最新资料
回复此楼 已获打赏: 0 积分

举报

新手

6 麦片

财富积分


050


2

主题

6

帖子

0

最佳答案
 楼主| 发表于 2014-11-15 22:37:43 | 显示全部楼层
刘维 发表于 2014-11-15 10:27
用匿名函数非常方便。如下所示。

您好,先谢谢您的回答。
我想的是重新定义一个m文件 也就是一个新的函数体,让我在输入可变个向量的时候做到以上的效果 请问有什么办法吗
回复此楼 已获打赏: 0 积分

举报

MATLAB 基础讨论
版块优秀回答者

入门

325 麦片

财富积分


50500


9

主题

914

帖子

69

最佳答案
  • 关注者: 25
发表于 2014-11-15 22:42:29 | 显示全部楼层 |此回复为最佳答案
匿名函数就是函数,稍作改动即可,如下。
  1. function [out] = komb2(varargin)
  2. out = cell2mat(varargin);
复制代码


调用文件如下。
  1. >> A = [1 2 3];
  2. B = [2 3];
  3. C = [5 6];
  4. D = [9 10];
  5. E = [11 12];
  6. F = [14,19];
  7. [A,B,C,D,E,F] = ndgrid(A,B,C,D,E,F);
  8. angle_6_axis1 = [A(:),B(:),C(:),D(:),E(:),F(:)];
  9. hf = @komb2
  10. angle_6_axis2 = hf(A(:),B(:),C(:),D(:),E(:),F(:));
  11. isequal(angle_6_axis1,angle_6_axis2)
  12. hf =
  13.     @komb2
  14. ans =
  15.      1
  16. >>
复制代码

关注新浪微博:书生一文; 微信:matlabfans; 获取MATLAB混编,文件与数据接口,并行技术图书答疑和最新资料
回复此楼 已获打赏: 0 积分

举报

新手

6 麦片

财富积分


050


2

主题

6

帖子

0

最佳答案
 楼主| 发表于 2014-11-15 22:59:45 | 显示全部楼层
刘维 发表于 2014-11-15 22:42
匿名函数就是函数,稍作改动即可,如下。

请问为何我运行 angle_6_axis2 = hf(A(:),B(:),C(:),D(:),E(:),F(:));的时候出现错误: 未定义与‘double’类型的输入参数相对应的函数‘komb2’
回复此楼 已获打赏: 0 积分

举报

MATLAB 基础讨论
版块优秀回答者

入门

325 麦片

财富积分


50500


9

主题

914

帖子

69

最佳答案
  • 关注者: 25
发表于 2014-11-15 23:08:22 | 显示全部楼层
zhoubotong 发表于 2014-11-15 22:59
请问为何我运行 angle_6_axis2 = hf(A(,B(,C(,D(,E(,F();的时候出现错误: 未定义与‘double ...

对啊,你不是要定义一个独立的函数码,你定义了吗?下面这个函数
function [out] = komb2(varargin)
out = cell2mat(varargin);
关注新浪微博:书生一文; 微信:matlabfans; 获取MATLAB混编,文件与数据接口,并行技术图书答疑和最新资料
回复此楼 已获打赏: 0 积分

举报

新手

6 麦片

财富积分


050


2

主题

6

帖子

0

最佳答案
 楼主| 发表于 2014-11-15 23:21:42 | 显示全部楼层
刘维 发表于 2014-11-15 23:08
对啊,你不是要定义一个独立的函数码,你定义了吗?下面这个函数
function [out] = komb2(varargin)
out  ...

OK, 现在可以了 刚才真的不知道怎么回事一直有错 多谢了!
回复此楼 已获打赏: 0 积分

举报

新手

5 麦片

财富积分


050


0

主题

7

帖子

0

最佳答案
发表于 2014-11-16 08:13:04 | 显示全部楼层
今天的口号来自“山高水长”:“落花无意因风雨,节操有情向东风。

                               
登录/注册后可看大图
回复此楼 已获打赏: 0 积分

举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /4 下一条

快速回复 返回顶部 返回列表