原始数据为数组  putbytime(89*199)putbytime(1,:)放置的是相同到期日卖权的行权价格(升序排列)
putbytime(2:89,:)放置的是89日的199个卖权的价格(如果没上市则价格为0)
如图:
 
7.21日上市43个期权,7.23日上市38个期权,下图左栏为剩余到期天数/365,右栏为当日上期的期权数量
 
现在,我只需要同一天上市的期权按照行权价格升序的前几个期权的数据,
为什么不能用for循环[size=14.2857151031494px]  putfortrade(:,i)=putbytime(:,i);来新建一个只有需要的数据的数组呢?
[size=14.2857151031494px]
若觉得问题抽象,请移步代码如下:
i=1;
n=1;
putfortrade=zeros(89,[]);
 if(length(find(putbytime(1,1:ipo2(n,2))<s(find(T(:,1)==ipo1(n,1)),1)))==1)  
[size=14.2857151031494px]%%ipo1(:,1)为上市日期的剩余到期天数,
 ipo2(:,2)为上市日期所有已上市期权数量的累积值,二者一一对应,if语句时为了判断改日上市的期权的价格是否小于当日现货价格,并计算当日虚值期权的数量,数量=1、<10、<15、>=15时,取不同的数量期权,将从[size=14.2857151031494px]putbytime数组中
取出来的列按顺序赋值给[size=14.2857151031494px]putfortrade的每一列,可最后程序报错,说维数不匹配,希望朋友们帮忙看看。
[size=14.2857151031494px]
     putfortrade(:,i)=putbytime(:,i);
 elseif length(find(putbytime(1,1:ipo2(n,2))<s(find(T(:,1)==ipo1(n,1)),1)))<10
     for j=i:length(find(putbytime(1,1:ipo2(n,2))<s(find(T(:,1)==ipo1(n,1)),1)))-1
         putfortrade(:,j)=putbytime(:,2:length(find(putbytime(1,2:ipo2(n,2))<s(find(T(:,1)==ipo1(n,1)),1))));
     end
 elseif length(find(putbytime(1,1:ipo2(n,2))<s(find(T(:,1)==ipo1(n,1)),1)))<15
     for j=i:length(find(putbytime(1,1:ipo2(n,2))<s(find(T(:,1)==ipo1(n,1)),1)))-5
             putfortrade(:,j)=putbytime(:,6:length(find(putbytime(1,1:ipo2(n,2))<s(find(T(:,1)==ipo1(n,1)),1))));
     end
 else for j=i:10
     putfortrade(:,j)=putbytime(:,i+4:i+13);
     end
 end