[已解决] MATLAB元胞数组

[复制链接]
ZHAO飞越颠峰 发表于 2022-7-29 17:07:53
本帖最后由 ZHAO飞越颠峰 于 2022-7-29 17:10 编辑

A.B矩阵为220*300,B矩阵为图像的灰度矩阵,现在想找出B矩阵中灰度值对应的A矩阵的数值的平均值,例如A=[0.1 0.1 0.2 0.2 0.3 ;0.3 0.4 0.5 0.4 0.5;0.4 0.5 0.6 0.9 0.4] ,B=[1 2 5 6 8;1 2 5 2 6;23 59 13 98 24],想生成数组{1,(0.1 0.3)}{2,(0.1 0.4 0.4)},最后的结果生成{1,0.2}{2,0.3},期待回答,谢谢大家

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

最佳答案


lyqmath 发表于 2022-7-29 19:33:06


可以考虑做数据对应,同时计算均值。
更多的程序可参考
《视觉大数据智能分析算法实战》[刘衍琦等]



  1. % A=[0.1 0.1 0.2 0.2 0.3 ;0.3 0.4 0.5 0.4 0.5;0.4 0.5 0.6 0.9 0.4] ,B=[1 2 5 6 8;1 2 5 2 6;23 59 13 98 24],
  2. % 想生成数组{1,(0.1 0.3)}{2,(0.1 0.4 0.4)},最后的结果生成{1,0.2}{2,0.3}
  3. A=[0.1 0.1 0.2 0.2 0.3 ;0.3 0.4 0.5 0.4 0.5;0.4 0.5 0.6 0.9 0.4];
  4. B=[1 2 5 6 8;1 2 5 2 6;23 59 13 98 24];
  5. B2 = sort(unique(B(:)));
  6. C = [];
  7. D = [];
  8. for i = 1 : length(B2)
  9.     % 寻找数值对应的位置
  10.     [r,c] = find(B==B2(i));
  11.     ind=sub2ind(size(B),r,c);
  12.     Ai = A(ind);
  13.     C{i} = {B2(i), {Ai(:)'}};
  14.     D{i} = {B2(i), mean(Ai)};
  15. end
  16. for i = 1 : length(C)
  17.     fprintf('\n第%d组:生成数组\n', i);
  18.     celldisp(C{i})
  19.     fprintf('\n第%d组:均值数组\n', i);
  20.     celldisp(D{i})
  21. end

复制代码


  1. 第1组:生成数组

  2. ans{1} =

  3.      1



  4. ans{2}{1} =

  5.     0.1000    0.3000



  6. 第1组:均值数组

  7. ans{1} =

  8.      1



  9. ans{2} =

  10.     0.2000



  11. 第2组:生成数组

  12. ans{1} =

  13.      2



  14. ans{2}{1} =

  15.     0.1000    0.4000    0.4000



  16. 第2组:均值数组

  17. ans{1} =

  18.      2



  19. ans{2} =

  20.     0.3000



  21. 第3组:生成数组

  22. ans{1} =

  23.      5



  24. ans{2}{1} =

  25.     0.2000    0.5000



  26. 第3组:均值数组

  27. ans{1} =

  28.      5



  29. ans{2} =

  30.     0.3500



  31. 第4组:生成数组

  32. ans{1} =

  33.      6



  34. ans{2}{1} =

  35.     0.2000    0.5000



  36. 第4组:均值数组

  37. ans{1} =

  38.      6



  39. ans{2} =

  40.     0.3500



  41. 第5组:生成数组

  42. ans{1} =

  43.      8



  44. ans{2}{1} =

  45.     0.3000



  46. 第5组:均值数组

  47. ans{1} =

  48.      8



  49. ans{2} =

  50.     0.3000



  51. 第6组:生成数组

  52. ans{1} =

  53.     13



  54. ans{2}{1} =

  55.     0.6000



  56. 第6组:均值数组

  57. ans{1} =

  58.     13



  59. ans{2} =

  60.     0.6000



  61. 第7组:生成数组

  62. ans{1} =

  63.     23



  64. ans{2}{1} =

  65.     0.4000



  66. 第7组:均值数组

  67. ans{1} =

  68.     23



  69. ans{2} =

  70.     0.4000



  71. 第8组:生成数组

  72. ans{1} =

  73.     24



  74. ans{2}{1} =

  75.     0.4000



  76. 第8组:均值数组

  77. ans{1} =

  78.     24



  79. ans{2} =

  80.     0.4000



  81. 第9组:生成数组

  82. ans{1} =

  83.     59



  84. ans{2}{1} =

  85.     0.5000



  86. 第9组:均值数组

  87. ans{1} =

  88.     59



  89. ans{2} =

  90.     0.5000



  91. 第10组:生成数组

  92. ans{1} =

  93.     98



  94. ans{2}{1} =

  95.     0.9000



  96. 第10组:均值数组

  97. ans{1} =

  98.     98



  99. ans{2} =

  100.     0.9000


  101. >>
复制代码


回复此楼

4 条回复


lyqmath 发表于 2022-7-29 19:33:06


可以考虑做数据对应,同时计算均值。
更多的程序可参考
《视觉大数据智能分析算法实战》[刘衍琦等]



  1. % A=[0.1 0.1 0.2 0.2 0.3 ;0.3 0.4 0.5 0.4 0.5;0.4 0.5 0.6 0.9 0.4] ,B=[1 2 5 6 8;1 2 5 2 6;23 59 13 98 24],
  2. % 想生成数组{1,(0.1 0.3)}{2,(0.1 0.4 0.4)},最后的结果生成{1,0.2}{2,0.3}
  3. A=[0.1 0.1 0.2 0.2 0.3 ;0.3 0.4 0.5 0.4 0.5;0.4 0.5 0.6 0.9 0.4];
  4. B=[1 2 5 6 8;1 2 5 2 6;23 59 13 98 24];
  5. B2 = sort(unique(B(:)));
  6. C = [];
  7. D = [];
  8. for i = 1 : length(B2)
  9.     % 寻找数值对应的位置
  10.     [r,c] = find(B==B2(i));
  11.     ind=sub2ind(size(B),r,c);
  12.     Ai = A(ind);
  13.     C{i} = {B2(i), {Ai(:)'}};
  14.     D{i} = {B2(i), mean(Ai)};
  15. end
  16. for i = 1 : length(C)
  17.     fprintf('\n第%d组:生成数组\n', i);
  18.     celldisp(C{i})
  19.     fprintf('\n第%d组:均值数组\n', i);
  20.     celldisp(D{i})
  21. end

复制代码


  1. 第1组:生成数组

  2. ans{1} =

  3.      1



  4. ans{2}{1} =

  5.     0.1000    0.3000



  6. 第1组:均值数组

  7. ans{1} =

  8.      1



  9. ans{2} =

  10.     0.2000



  11. 第2组:生成数组

  12. ans{1} =

  13.      2



  14. ans{2}{1} =

  15.     0.1000    0.4000    0.4000



  16. 第2组:均值数组

  17. ans{1} =

  18.      2



  19. ans{2} =

  20.     0.3000



  21. 第3组:生成数组

  22. ans{1} =

  23.      5



  24. ans{2}{1} =

  25.     0.2000    0.5000



  26. 第3组:均值数组

  27. ans{1} =

  28.      5



  29. ans{2} =

  30.     0.3500



  31. 第4组:生成数组

  32. ans{1} =

  33.      6



  34. ans{2}{1} =

  35.     0.2000    0.5000



  36. 第4组:均值数组

  37. ans{1} =

  38.      6



  39. ans{2} =

  40.     0.3500



  41. 第5组:生成数组

  42. ans{1} =

  43.      8



  44. ans{2}{1} =

  45.     0.3000



  46. 第5组:均值数组

  47. ans{1} =

  48.      8



  49. ans{2} =

  50.     0.3000



  51. 第6组:生成数组

  52. ans{1} =

  53.     13



  54. ans{2}{1} =

  55.     0.6000



  56. 第6组:均值数组

  57. ans{1} =

  58.     13



  59. ans{2} =

  60.     0.6000



  61. 第7组:生成数组

  62. ans{1} =

  63.     23



  64. ans{2}{1} =

  65.     0.4000



  66. 第7组:均值数组

  67. ans{1} =

  68.     23



  69. ans{2} =

  70.     0.4000



  71. 第8组:生成数组

  72. ans{1} =

  73.     24



  74. ans{2}{1} =

  75.     0.4000



  76. 第8组:均值数组

  77. ans{1} =

  78.     24



  79. ans{2} =

  80.     0.4000



  81. 第9组:生成数组

  82. ans{1} =

  83.     59



  84. ans{2}{1} =

  85.     0.5000



  86. 第9组:均值数组

  87. ans{1} =

  88.     59



  89. ans{2} =

  90.     0.5000



  91. 第10组:生成数组

  92. ans{1} =

  93.     98



  94. ans{2}{1} =

  95.     0.9000



  96. 第10组:均值数组

  97. ans{1} =

  98.     98



  99. ans{2} =

  100.     0.9000


  101. >>
复制代码


回复此楼

ZHAO飞越颠峰 发表于 2022-7-31 20:44:34
lyqmath 发表于 2022-7-29 19:33
可以考虑做数据对应,同时计算均值。
更多的程序可参考
《视觉大数据智能分析算法实战》[刘衍琦等][/back ...

好的,谢谢大佬,已经下单书籍,好好学习

ZHAO飞越颠峰 发表于 2022-7-31 20:46:26
那如果想画出D的两列数据的图怎么画

ZHAO飞越颠峰 发表于 2022-7-31 22:20:35
ZHAO飞越颠峰 发表于 2022-7-31 20:46
那如果想画出D的两列数据的图怎么画

已解决,不用麻烦啦
您需要登录后才可以回帖 登录 | 注册

本版积分规则

相关帖子
相关文章
热门教程
站长推荐
快速回复 返回顶部 返回列表