24小时热门版块排行榜    

查看: 588  |  回复: 2
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

ice_huya

金虫 (小有名气)

[求助] 一个看起来很容易的程序,却困扰我好久,求助大家(关于生成矩阵) 已有1人参与

一个看起来很容易编的程序,却困扰我好久,希望大家帮忙挑错,先谢了!

问题描述如下:

有两个矩阵H, N:

H=[1;2;3;4;5;6];          %表示矩阵中各元素的值
N=[6;9;11;4;1;1];    %表示各元素出现的次数, 总次数为6+9+11+4+1+1=32

想生成如图中的新矩阵ss, 即:

当元素对应的出现总次数n为偶数时,前后各出现0.5*n次;
当元素对应的出现总次数n为奇数时,前:int(0.5*n) 后:n-int(0.5*n)
比如,H=1时, N=6, 则ss(1:3)=1, ss(30:32)=1;
            H=2时, N=9, 则ss(4:8)=2, ss(25:29)=2;
            .....

我的程序编写如下:

H=[1;2;3;4;5;6];         
N=[6;9;11;4;1;1];

w=1;
a=0;
N_ss=32;  %N中各元素出现总次数,也是ss的行数,新矩阵ss : 32*1

while w<=length(H)

         if mod(N(w,1),2)==0    %n为偶
            ss(a+1:a+0.5*N(w,1),1)=H(w,1);                    %前面0.5*n次
            ss(N_ss-a-0.5*N(w,1)+1:N_ss-a,1)=H(w,1);  %后面0.5*n次
         
         else                                   %n为奇
            
            ss(a+1:a+fix(0.5*N(w,1)),1)=H(w,1);               %前面int(0.5*n)次(去零取整)
            ss(N_ss-a-fix(0.5*N(w,1)):N_ss-a,1)=H(w,1);  %后面n-int(0.5*n)次(后面通常应比n为偶数时多1次)

         end
      

  a=a+fix(0.5*N(w,1));
  w=w+1;

end

ss
figure(1);
plot(ss(:,1));


可是如按上面程序运算,生成的新矩阵ss总是前后完全对称,无论n为奇或偶,到底是哪里出了问题呢。。。?

期待大家的指教!!不胜感激!!!!
         










一个看起来很容易的程序,却困扰我好久,求助大家(关于生成矩阵)
台阶式矩阵图.JPG
回复此楼
已阅   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 ice_huya 的主题更新
信息提示
请填处理意见