查看: 211|回复: 5|关注: 0

[已解决] 求助一段循环代码

[复制链接]

新手

22 麦片

财富积分


050


13

主题

68

帖子

0

最佳答案
  • 关注者: 2
假设有一行向量数据 a=1:20,将其分成n段,每段包含若干数据,n的值通过前部代码获得,并且会不断变化。现在要对每一段进行不同的操作,比如对第1段数据乘1,对第二段乘2,以此类推,对第n段乘n,得到一个新的行向量,请问这段代码该怎么写?(假设分段情况为n=4,各段数据分别为【1 2】【3:12】【13:15】【16:20】)

论坛优秀回答者

5

主题

1522

帖子

426

最佳答案
  • 关注者: 123
发表于 2019-9-10 19:10:22 | 显示全部楼层
用repmat构造由倍率构成的向量,然后与原始向量做点乘
比如
  1. a = 1:20;
  2. MultipleFactor =[ repmat(1, [1,numel([1 2])]), repmat(2, [1,numel([3:12])]), repmat(3, [1,numel([13:15])]), repmat(4, [1,numel([16:20])]) ];
  3. result = MultipleFactor .*a
复制代码

提问请:①准确描述问题②贴代码别贴代码的截图③勿一问多帖或一帖多问④及时反馈⑤看清回复的每个字

新手

22 麦片

财富积分


050


13

主题

68

帖子

0

最佳答案
  • 关注者: 2
 楼主| 发表于 2019-9-11 09:22:07 | 显示全部楼层
TouAkira 发表于 2019-9-10 19:10
用repmat构造由倍率构成的向量,然后与原始向量做点乘
比如

谢谢您提供的思路,可能我描述的不太清楚,因为我这个n受外层循环的影响在不停在变化,其中每段包含的元素个数也在变化,所以无法在代码中写出具体段数。外层循环会给出一个描述分段结果的向量r, 例如r=[2 10 3 5],r的元素数目描述了分段数n,元素值表示了每段的长度,但都是随外层循环在变化。 所以希望能通过循环或者其他方式先判断出数据属于哪一段,然后再对数据应用相应的处理规则,我的想法写成伪代码大概是下面这种形式:
  1. for i=1:20
  2.     if ismember(i,第1段)
  3.         do 规则1
  4.     elseif ismember(i,第2段)
  5.         do 规则2
  6.     elseif ....
  7.             ....
  8.     elseif ismember(i,第n段)
  9.         do 规则n
  10.     end
  11. end
复制代码


因为无法提前确定n的具体值,所以无法确定要多少个 if else语句,希望您能指导一下

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

入门

68 麦片

财富积分


50500


0

主题

65

帖子

14

最佳答案
发表于 2019-9-11 09:56:55 | 显示全部楼层 |此回复为最佳答案
本帖最后由 alvinlau 于 2019-9-11 10:02 编辑

要能把第k项规则写成通式F(i,k)的话,可以:

  1. r=[2 10 3 5];
  2. n=size(r,2);
  3. %%
  4. r_cum=cumsum(r);
  5. for i=1:sum(r)
  6. k=max((r_cum<i).*(1:n))+1;%k即为i所属区间
  7. F(i,k)%第k项规则
  8. end
复制代码

新手

22 麦片

财富积分


050


13

主题

68

帖子

0

最佳答案
  • 关注者: 2
 楼主| 发表于 2019-9-11 10:45:24 | 显示全部楼层
alvinlau 发表于 2019-9-11 09:56
要能把第k项规则写成通式F(i,k)的话,可以:

谢谢您,我的每段规则都不太一样,我再思考一下,看看能不能把规则写成一致,或者再尝试其他的方法

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

入门

68 麦片

财富积分


50500


0

主题

65

帖子

14

最佳答案
发表于 2019-9-11 13:08:39 | 显示全部楼层
chenhaotage 发表于 2019-9-11 10:45
谢谢您,我的每段规则都不太一样,我再思考一下,看看能不能把规则写成一致,或者再尝试其他的方法 ...

你不如描述下实际的规则,看看能不能写
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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