追加for循环matlab

问题描述:

我有这个循环(它是一个更大的代码的一部分),它输出债券的价格(HW2FPrice)为连续的SettleEvo日期。 如何让它输出一个单一的HW2FPrice数组而不是大量的单个输出?我想阵列是HW2FPrice VS. SettleEvo。非常感谢,追加for循环matlab

for SettleEvo = Settle:datenum('14-Mar-2013'); 
NumCouponsRemaining = cpncount(SettleEvo, Maturity, Period, Basis, 1, IssueDate); % Coupon payments remaining until maturity. Calculates the number of periods from start to finish. 
nPeriods = NumCouponsRemaining; 



[CFlowAmounts, CFlowDates] = cfamounts(CouponRate, SettleEvo, Maturity); 
CFlowTimes = yearfrac(SettleEvo,CFlowDates); 
CFlowZero = interp1(ZeroTimes,ZeroRates,CFlowTimes,'linear','extrap'); 
CFlowDF_Zero = zero2disc(CFlowZero,CFlowDates,SettleEvo); 
Price_Zero = CFlowAmounts*CFlowDF_Zero'; 
[CFlowAmounts, CFlowDates, TFactors, Factors] = cfamounts(CouponRate,SettleEvo,repmat(Maturity,1,nTrials),Period,Basis); 
CFlowDFSim = cumprod(exp(squeeze(-SimZeroRates(2:end,1,:).*stepSize))); 

SimZeroRates是一个数组(nPeriods,nTenors,nTrials);

Price_Ind = sum(CFlowAmounts(:,2:end).*CFlowDFSim',2); 
HW2FPrice = mean(Price_Ind) 
end 
+1

你在这里问的不完全清楚 - 你能否削减代码并澄清你需要什么? – Ansari 2012-08-05 06:25:18

+0

我主要想将HW2FPrice存储在单个输出中,而不是单个输出。这对我有好处。剩下的代码就是为了展示SettleEvo日期如何与HW2FPrice依赖的其他值相关联。这是为了防止有人能够进一步进行并在输出中包含给定的每个HW2FPrice的相应SettleEvo日期。非常感谢您的帮助。 – Mary 2012-08-05 12:03:33

HW2FPrices = []; % creates an empty array 

for SettleEvo = Settle:datenum('14-Mar-2013'); 
    % ... whatever other code is in your loop 
    HW2FPrice = mean(Price_Ind) 
    HW2FPrices(end+1) = HW2FPrice; 
end 

当循环完成,HW2FPrinces将包含你看到在你的循环中产生的所有HW2FPrice值的数组。

+0

嗨,这个作品很棒。非常感谢。在得到错误信息后,我必须将HW2FPrices [end + 1]更改为HW2FPrices(end + 1)。但它的工作原理与我需要的完全一样。非常感谢您的帮助。谢谢! – Mary 2012-08-11 10:58:10

+0

@玛丽“我确实不得不改变......”(摇着空气中的拳头)...... JAVA! ......好的,我为我的后代做了正确的答案。 – mwengler 2012-08-15 18:43:28

+0

道歉..显示了我认识matlab的水平,给了我多少困惑。我想我把它放在一个“我做到了,是吗?”有点事。对于具有我的matlab复杂程度的后代而言。再次感谢。 – Mary 2012-08-15 21:24:10