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

[已解决] 如何循环调用函数

[复制链接]

新手

19 麦片

财富积分


050


8

主题

15

帖子

0

最佳答案
光谱预处理。分为3个步骤,a,b,c。每个步骤有不同的处理方法,我都已经写好函数,比如有a1,a2;b1,b2;c1,c2。现在我想写一段代码一次就可以得到所有方法不同组合的处理结果(按照固定流程先a再b再c),生物专业刚刚学习matlab没多久,希望有大佬赐教!
回复主题 已获打赏: 0 积分

举报

论坛优秀回答者

9

主题

1638

帖子

347

最佳答案
  • 关注者: 81
发表于 2020-8-7 10:36:00 | 显示全部楼层
可以试试switch列出每一步骤的不同情况,然后三重for循环,得到不同的组合情况
回复此楼 已获打赏: 0 积分

举报

新手

19 麦片

财富积分


050


8

主题

15

帖子

0

最佳答案
 楼主| 发表于 2020-8-7 10:44:53 | 显示全部楼层
20141303 发表于 2020-8-7 10:36
可以试试switch列出每一步骤的不同情况,然后三重for循环,得到不同的组合情况 ...

不是很理解,拜托能再稍微说具体一点吗。。。
回复此楼 已获打赏: 0 积分

举报

论坛优秀回答者

9

主题

1638

帖子

347

最佳答案
  • 关注者: 81
发表于 2020-8-7 10:50:53 | 显示全部楼层 |此回复为最佳答案
例如
  1. i=0;
  2. for a=1:2
  3.     for b=1:2
  4.         i=i+1;
  5.         switch a
  6.             case 1
  7.                 as=3;
  8.             case 2
  9.                 as=5;
  10.         end
  11.         switch b
  12.             case 1
  13.                 bs=5;
  14.             case 2
  15.                 bs=8;
  16.         end
  17.         c(i)=as+bs;
  18.     end
  19. end

复制代码
回复此楼 已获打赏: 0 积分

举报

新手

19 麦片

财富积分


050


8

主题

15

帖子

0

最佳答案
 楼主| 发表于 2020-8-7 11:05:25 | 显示全部楼层

哈哈,感谢!懂啦
回复此楼 已获打赏: 0 积分

举报

新手

19 麦片

财富积分


050


8

主题

15

帖子

0

最佳答案
 楼主| 发表于 2020-8-7 15:38:25 | 显示全部楼层
  1. b=0;
  2. s=0;
  3. n=0;
  4. for BASELINE = 1:3
  5.     n=n+1;
  6.     for SCATTER = 1:3
  7.         s=s+1;
  8.         for NOISE = 1:3
  9.             b=b+1;
  10.             switch BASELINE
  11.                 case 1
  12.                     Bx = asls(x);
  13.                 case 2
  14.                     Bx = detr(x);
  15.                 case 3
  16.                     Bx = dif(x);
  17.             end
  18.             switch SCATTER
  19.                 case 1
  20.                     BSx = msc(Bx);
  21.                 case 2
  22.                     BSx = rnv(Bx);
  23.                 case 3
  24.                     BSx = snv(Bx);
  25.             end
  26.             switch NOISE
  27.                 case 1
  28.                     BSNx = sg(BSx,1);
  29.                 case 2
  30.                     BSNx = sg(BSx,2);
  31.                 case 3
  32.                     BSNx = sg(BSx,2);
  33.             end
  34.         end
  35.         PP{b,s,n}=BSNx;
  36.     end
  37. end
复制代码

怎么能让b,s,n分别对应三种方法呢?我这样写s和n会一直+1
回复此楼 已获打赏: 0 积分

举报

论坛优秀回答者

9

主题

1638

帖子

347

最佳答案
  • 关注者: 81
发表于 2020-8-7 15:42:54 | 显示全部楼层
  1. PP{b,s,n}=BSNx;
复制代码

改为
  1. PP{BASELINE,SCATTER,NOISE}=BSNx;
复制代码

去掉b,s,n
回复此楼 已获打赏: 0 积分

举报

新手

19 麦片

财富积分


050


8

主题

15

帖子

0

最佳答案
 楼主| 发表于 2020-8-7 16:25:17 | 显示全部楼层
20141303 发表于 2020-8-7 15:42

改为
去掉b,s,n

感谢!感谢!感谢!感谢!
回复此楼 已获打赏: 0 积分

举报

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

本版积分规则

关闭

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

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