Matlab Несоответствие размерности назначения с подпиской.

Я создал этот скрипт, но не могу найти в нем проблемную матрицу. это мой скрипт для ответа на стандартный вариант вызова:

N=50;
T=90/252;
dt=T/N;
K=102;
S0=100;
B0=1;
r=0.02;

sigma=0.25;



for i=1:N
    ttomat(i)=(N-i+1)*dt;   %+1 serve per aggiustare il tempo
    d1(i)=(log(S(i,:)./K)+(r+0.5*sigma^2)*ttomat(i))./(sigma*sqrt(ttomat(i)));
    d2(i)=d1(i)-sigma*sqrt(ttomat(i));
    Call(i,:)=S(i,:).*normcdf(d1(i))-K*exp(-r*ttomat(i)*normcdf(d2(i)));
    alpha(i,:)=normcdf(d1(i));    %delta della Call 
    beta(i,:)=(Call(i,:)-alpha(i,:).*S(i,:))./(B0*exp(r*(i-1)*dt));

end

person Filippo Rellini    schedule 27.05.2017    source источник
comment
S не определено .... по крайней мере, укажите его размеры ...   -  person Siva Srinivas Kolukula    schedule 27.05.2017
comment
Пожалуйста, прочтите это как задать вопрос и следуйте приведенным там рекомендациям, чтобы уточнить свой вопрос с помощью дополнительной информации, такой как код и сообщение об ошибке, чтобы описать вашу проблему программирования.   -  person thewaywewere    schedule 27.05.2017


Ответы (1)


Вы должны инициализировать/предварительно выделить результат, который вычисляется в циклах. В вашем коде вы не распределили результаты заранее. Предварительное распределение поможет вам быстро достичь результата. Всегда рекомендуется предварительно выделять необходимые переменные. Проверьте приведенный ниже код, он работает для вас?

N=50;
T=90/252;
dt=T/N;
K=102;
S0=100;
B0=1;
r=0.02;

sigma=0.25;

S = rand(N,1) ;

ttomat = zeros(1,N) ;
d1 = zeros(1,N) ;
d2 = zeros(1,N) ;
Call = zeros(1,N) ;
alpha = zeros(1,N) ;
beta = zeros(1,N) ;
for i=1:N
    ttomat(i)=(N-i+1)*dt;   %+1 serve per aggiustare il tempo
    d1(i)=(log(S(i,:)./K)+(r+0.5*sigma^2)*ttomat(i))./(sigma*sqrt(ttomat(i)));
    d2(i)=d1(i)-sigma*sqrt(ttomat(i));
    Call(i,:)=S(i,:).*normcdf(d1(i))-K*exp(-r*ttomat(i)*normcdf(d2(i)));
    alpha(i,:)=normcdf(d1(i));    %delta della Call 
    beta(i,:)=(Call(i,:)-alpha(i,:).*S(i,:))./(B0*exp(r*(i-1)*dt));

end
person Siva Srinivas Kolukula    schedule 27.05.2017
comment
Обратите внимание, что я взял S случайную матрицу размера N * 1. Измените его на данные вашего дела. - person Siva Srinivas Kolukula; 27.05.2017