이 루프는 벡터 "Diff"를 생성합니다. 생성 된 모든 Diff를 기록하는 배열에 Diff 값을 어떻게 배치합니까? 문제는 Diff의 길이가 "CleanPrice"테이블의 너비 인 고정 길이 (36) 여야한다는 것입니다. 그러나 col_set은 길이가 다르므로 (읽는 데이터의 NaN 수에 따라) Diff도 길이가 다릅니다. 필요한 행 번호에 따라 생성 된 응답을 할당하면됩니다. 즉 diff의 row (i)는 col (i)를 포함해야하는데, 여기서 Diff의 다른 모든 행에는 "0"또는 "NaN"이 지정되어야합니다. 기본적으로 DiffArray은 각 행이 (36 x 1) DiffArray 인 (nTrials x 36) 배열이어야합니다.Matlab 루프에서 배열에 요소 할당
DiffArray=[];
StartRow=2935;
EndRow=2940;
nTrials=EndRow-StartRow;
for row=StartRow:EndRow;
col_set=find(~isnan(gcm3.data.CleanPrice(row,1:end)));
col=col_set(:,2:end);
CleanPrices=transpose(gcm3.data.CleanPrice(row,col));
Maturity=gcm3.data.CouponandMaturity(col-1,2);
SettleDate=gcm3.data.CouponandMaturity(row,3);
Settle = repmat(SettleDate,[length(Maturity) 1]);
CleanPrices =transpose(gcm3.data.CleanPrice(row,col));
CouponRate = gcm3.data.CouponandMaturity(col-1,1);
Instruments = [Settle Maturity CleanPrices CouponRate];
PlottingPoints = gcm3.data.CouponandMaturity(1,2):gcm3.data.CouponandMaturity(36,2);
Yield = bndyield(CleanPrices,CouponRate,Settle,Maturity);
SvenssonModel = IRFunctionCurve.fitSvensson('Zero',SettleDate,Instruments)
ParYield=SvenssonModel.getParYields(Maturity);
[PriceActual, AccruedIntActual] = bndprice(Yield, CouponRate, Settle, Maturity);
[PriceNSS, AccruedIntNSS] = bndprice(ParYield, CouponRate, Settle, Maturity);
Diff=PriceActual-PriceNSS
DiffArray(end+1,:)=Diff
end
내가 this 게시물에 num2cell 보았지만 '년후 : 이것은 내 코드입니다
??? Subscripted assignment dimension mismatch. Error in ==> NSSmodel at 41 DiffMatrix(end+1,:)=Diff
:하지만 그 순간, COL 변경의 길이, 나는 다음과 같은 오류가 각시 정확하게 적용하는 법을 배우고 그것에 관련된 오류가 발생하기 시작했습니다.
좋아요! 덕분에 (다시)! 그러나 나는 하나의 문제를 겪는다. DiffArray에서 나는 그들이 원하는 장소에서 원하는 숫자를 얻습니다. 그러나 그들 모두의 끝에 추가 된 모든 것은 항상 + 0.0000i 또는 +/- "some number"입니다. 예 : NaN + 0.000i 또는 -0.1423-0.0602i. 어떤 제안? 또는 그것이 무엇을 의미하는지 (허수? - Diff의 값은 실수 임). 아니면 내가 잘못 했어? 내가 사용한 코드는 다음과 같습니다. DiffArray = 0 (EndRow-StartRow + 1, 36) * NaN; cols = (col-1); rowindex = row-StartRow + 1; Diff = transpose (PriceActual-PriceNSS); DiffArray (rowindex, cols (1, :)) = Diff (1, :); – Mary
할당하기 직전에 DiffArray와 Diff의 값은 무엇입니까? 전치사가 허수 성분을 추가 할 수 있습니까? 이 예외가 시작되는 곳을 확인하려면 디버거를 단계별로 실행하십시오. – Dan
일부 행에 대해서는 다음과 같이 나타납니다. 경고 : 복잡한 X 및/또는 Y 인수의 가상 부분은 모델에서 무시됩니다. 이 행에 대해서는 ParYield에 의해 생성 된 것으로 생각되는 허수로 Diff를 얻습니다. DiffArray * all *에서 엔트리는 허위 숫자를받습니다. 나는이 방법으로 반응하는 것을 제안하기 위해 데이터를 검사하지 않았다. 모델을 NSModel *으로 바꾸면 치료할 수있는 것 같다. 이상한. – Mary