2013-02-19 2 views
0

Ну, я пытаюсь сделать векторный вывод с помощью этого кода. Просто некоторые функции, что приводит мне нужно получить в векторной формеmatlab vector output

function [smthOut] = myErf(start, wstep, final) 

    for k = start:wstep:final 
     error_func = 2/sqrt(pi) * erfTaylor(k); 
     smthOut(final/wstep) = error_func; 
     disp(['ON x=', num2str(k), ' RES IS f= ', num2str(error_func)]); 
    end; 

    end 

но выход выглядит так

>> s = myErf(0, 0.2, 2) 
ON x=0 RES IS f= 0 
ON x=0.2 RES IS f= -0.0029732 
ON x=0.4 RES IS f= -0.022959 
ON x=0.6 RES IS f= -0.073171 
ON x=0.8 RES IS f= -0.1606 
ON x=1 RES IS f= -0.28568 
ON x=1.2 RES IS f= -0.44374 
ON x=1.4 RES IS f= -0.62745 
ON x=1.6 RES IS f= -0.82906 
ON x=1.8 RES IS f= -1.042 
ON x=2 RES IS f= -1.2614 

s = 

    Columns 1 through 8 

     0   0   0   0   0   0   0   0 

    Columns 9 through 10 

     0 -1.2614 

Что worng? Как это исправить? Благодаря!

ответ

1

Поскольку final/wstep является постоянным (2/0,2 = 10), на каждой итерации цикла одно и то же поле массива заполняется результатами (то есть smthOut(10)).

Вы можете попробовать что-то вроде

function [smthOut] = myErf(start, wstep, final) 

    cnt = 1; 
    for k = start:wstep:final 
     error_func = 2/sqrt(pi) * erfTaylor(k); 
     smthOut(cnt) = error_func; 
     disp(['ON x=', num2str(k), ' RES IS f= ', num2str(error_func)]); 
     cnt = cnt + 1; 
    end; 

end 
+0

ой, спасибо! Черт, я этого не узнал! : \ – DanilGholtsman