查看: 478|回复: 9|关注: 0

[已答复] 矩阵依次取值并进行简单计算如何实现

[复制链接]

新手

11 麦片

财富积分


050


5

主题

12

帖子

0

最佳答案
发表于 2020-2-15 14:52:53 | 显示全部楼层 |阅读模式
有矩阵A[0.3 0.4 0.5] ,B[0.3 0.4 0.5],C[0.1 0.2]
想实现一个从矩阵中各取出一个值进行简单相加求和 并实现和值与期望值 1 是否一致的判断,并保存一致情况的取出值

一开始用了randperm函数,可以实现这整个要求,
但是运行了一段时间发现这个随机取值次数太多了,而且不知道什么时候能够把所有符合的情况都选出来

想到了一个方法,就是从A中先取一个值,然后再从B中取一个值,再从C中取一个值,进行相加,直到所有情况都取完,
再重新在A中取另外的一个新值,再去BC中取值,如此重复,直到所有情况都取完,
但是这个方法研究了半天不知道如何实现了,希望有大佬能赐教,如果有其他的好方法也请说说。
回复主题 已获打赏: 0 积分

举报

论坛优秀回答者

5

主题

2420

帖子

732

最佳答案
  • 关注者: 202
发表于 2020-2-15 15:23:53 | 显示全部楼层
规模不大,直接for循环嵌套,穷举就是了
提问请:①准确描述问题②提出你的思考(等着抄作业的一律锁帖)③提供代码文本而非截图④及时反馈
回复此楼 已获打赏: 0 积分

举报

论坛优秀回答者

0

主题

2265

帖子

351

最佳答案
  • 关注者: 64
发表于 2020-2-15 15:42:04 | 显示全部楼层
可以使用fullfact函数列出所有元素组合(元素索引)吧!

ind=fullfact([3 3 2]);
indNew=ind((A(ind(:,1))+B(ind(:,2))+C(ind(:,3)))==1,:)
1.仔细阅读论坛各版块置顶贴;2.该论坛旨在交流解惑,请粘贴出错代码;3.doc+'函数名'查看函数说明 ...
回复此楼 已获打赏: 0 积分

举报

新手

11 麦片

财富积分


050


5

主题

12

帖子

0

最佳答案
 楼主| 发表于 2020-2-15 15:50:19 | 显示全部楼层
TouAkira 发表于 2020-2-15 15:23
规模不大,直接for循环嵌套,穷举就是了

您看一下我之前设计的代码     
                  

  1. clc

  2. a=[0.1000 0.1500 0.0500];
  3. b=[0.1000 0.1500 0.2000];
  4. c=[0.1000 0.1500 0.2000];
  5. d=[0.2000 0.2500 0.3000];
  6. e=[0.1500 0.2000 0.2500];
  7. f=[0.0500 0.1000 0.1500];   

  8. while 1   
  9. A=a(randperm(length(a),1));
  10. B=b(randperm(length(b),1));   
  11. C=c(randperm(length(c),1));   
  12. D=d(randperm(length(d),1));   
  13. E=e(randperm(length(e),1));  
  14. F=f(randperm(length(f),1));
  15.    
  16. %规定条件

  17.    Aa=A+B+C+D+E+F
  18.    Bb=[A B C D E F];                           
  19.     if Aa==1.000      
  20.       Cv=xlsread('result33.xlsx','sheet1');
  21.       %二次规定
  22.       if all(ismember(Bb,Cv))
  23.           h= errordlg('已存在');
  24.             pause(2);
  25.           delete(h);  % 删除图形句柄
  26.           continue
  27.       else
  28.         %写入
  29.       fileName='result33.xlsx';
  30.       sheetname='sheet1';
  31.       [num, text, raw] = xlsread(fileName);
  32.       [rowN, columnN]=size(raw);
  33.       xlsRange=['A',num2str(rowN+1)];
  34.       xlswrite('result33.xlsx',Bb,sheetname,xlsRange);
  35.       h= errordlg('写入完成');
  36.       pause(2);
  37.       delete(h);  % 删除图形句柄
  38.       break
  39.       end
  40.    else
  41.      h= errordlg('重新进行请稍后');
  42.      pause(1);
  43.      delete(h);  % 删除图形句柄
  44.      continue
  45.    end
  46.      end        
  47.                   
复制代码


现在它可以实现遇到已满足条件的可写入随后就停了,我在想能不能让他把所有情况都走一遍并写入不重复的的情况才停。
现在是测试,后面需要从excel导入,数据还是比较多的,您能复现一下,帮我看看嘛?
感谢
回复此楼 已获打赏: 0 积分

举报

论坛优秀回答者

0

主题

2265

帖子

351

最佳答案
  • 关注者: 64
发表于 2020-2-15 15:54:37 | 显示全部楼层
flowertrees 发表于 2020-2-15 15:50
您看一下我之前设计的代码     
                  

有简单方法为什么不用简单的方法呢!
1.仔细阅读论坛各版块置顶贴;2.该论坛旨在交流解惑,请粘贴出错代码;3.doc+'函数名'查看函数说明 ...
回复此楼 已获打赏: 0 积分

举报

新手

11 麦片

财富积分


050


5

主题

12

帖子

0

最佳答案
 楼主| 发表于 2020-2-15 16:13:52 | 显示全部楼层
WarnerChang 发表于 2020-2-15 15:54
有简单方法为什么不用简单的方法呢!

没用过这个函数 我试试:'(
回复此楼 已获打赏: 0 积分

举报

论坛优秀回答者

0

主题

2265

帖子

351

最佳答案
  • 关注者: 64
发表于 2020-2-15 16:18:15 | 显示全部楼层
flowertrees 发表于 2020-2-15 16:13
没用过这个函数 我试试

indNew是索引,最后转化为相应的数值就好了。
1.仔细阅读论坛各版块置顶贴;2.该论坛旨在交流解惑,请粘贴出错代码;3.doc+'函数名'查看函数说明 ...
回复此楼 已获打赏: 0 积分

举报

新手

11 麦片

财富积分


050


5

主题

12

帖子

0

最佳答案
 楼主| 发表于 2020-2-15 16:27:08 | 显示全部楼层
WarnerChang 发表于 2020-2-15 15:54
有简单方法为什么不用简单的方法呢!

不太明白这个函数如何使用,哭了。那我的代码如果改用这个fullfact该怎么改写呢?
回复此楼 已获打赏: 0 积分

举报

论坛优秀回答者

0

主题

2265

帖子

351

最佳答案
  • 关注者: 64
发表于 2020-2-15 16:31:23 | 显示全部楼层
flowertrees 发表于 2020-2-15 16:27
不太明白这个函数如何使用,哭了。那我的代码如果改用这个fullfact该怎么改写呢?
...

ind=fullfact([3 3 3 3 3 3]);%6个3是因为有6个变量abcdef,3对应元素个数
indNew=ind((A(ind(:,1))+B(ind(:,2))+C(ind(:,3)+D(ind(:,4)+E(ind(:,5)+F(ind(:,6))))))==1,:)
1.仔细阅读论坛各版块置顶贴;2.该论坛旨在交流解惑,请粘贴出错代码;3.doc+'函数名'查看函数说明 ...
回复此楼 已获打赏: 0 积分

举报

论坛优秀回答者

4

主题

1535

帖子

192

最佳答案
  • 关注者: 93
发表于 2020-2-15 18:43:53 | 显示全部楼层
WarnerChang 发表于 2020-2-15 16:31
ind=fullfact([3 3 3 3 3 3]);%6个3是因为有6个变量abcdef,3对应元素个数
indNew=ind((A(ind(:,1))+B(in ...

这个牛皮,学到了
回复此楼 已获打赏: 0 积分

举报

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

本版积分规则

关闭

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

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