ベクトル「Diff」を生成するこのループがあります。生成されたすべての Diff を記録する配列に Diff の値を配置するにはどうすればよいですか? 問題は、Diff の長さがテーブル "CleanPrice" の幅である固定長 (36) でなければならないことです。ただし、col_set の長さは (読み取っているデータ内の NaN の数に応じて) 変化するため、Diff の長さも変化します。私がする必要があるのは、適切な列番号に従って生成された回答を割り当てることです。つまり、diff の行 (i) には col(i) を含める必要があります。この場合、Diff の他のすべての行には「0」または「NaN」を割り当てる必要があります。基本的に、 DiffArrayを (nTrials x 36) の配列にする必要があります。ここで、各行は (36 x 1)の DiffArrayが生成されます。ただ今のところ、colの長さが変わるたびに、
??? 添字付きの代入次元が一致しません。==> 41 での NSSmodel のエラー DiffMatrix(end+1,:)=Diff
これは私のコードです:
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
この投稿でnum2cellを見ましたが、正しく適用する方法がわからず、代わりにそれに関連するエラーが発生し始めました。