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

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

[复制链接]

新手

25 麦片

财富积分


050


14

主题

72

帖子

0

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

举报

论坛优秀回答者

5

主题

2228

帖子

665

最佳答案
  • 关注者: 186
发表于 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
复制代码

提问请:①准确描述问题②提出你的思考(等着抄作业的一律锁帖)③提供代码文本而非截图④及时反馈
回复此楼 已获打赏: 0 积分

举报

新手

25 麦片

财富积分


050


14

主题

72

帖子

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语句,希望您能指导一下
回复此楼 已获打赏: 0 积分

举报

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

入门

124 麦片

财富积分


50500


0

主题

110

帖子

26

最佳答案
  • 关注者: 3
发表于 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
复制代码
回复此楼 已获打赏: 0 积分

举报

新手

25 麦片

财富积分


050


14

主题

72

帖子

0

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

谢谢您,我的每段规则都不太一样,我再思考一下,看看能不能把规则写成一致,或者再尝试其他的方法
回复此楼 已获打赏: 0 积分

举报

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

入门

124 麦片

财富积分


50500


0

主题

110

帖子

26

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

你不如描述下实际的规则,看看能不能写
回复此楼 已获打赏: 0 积分

举报

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

本版积分规则

关闭

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

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