Building array with custom function

Hello,
I am facing a problem with building an array using a custom function.
I would like to transfer a task from the main script file to the function file. I have such a piece of script:
StageMain=0;
TStart=10;
TEnd=500;
TStep=0.001;
Tmag=1;
.
.
.
DataInput = ones(length(StageMain),8);
Tarray = ones(1,length(StageMain));
.
.
.
T=TStart;
while T<TEnd
T=T+TStart*StageMain;
StageMain=StageMain+TMag;
DataInput(StageMain,1) = double(T);
Tarray(1, StageMain) = double(T);
end
its job is to build (actually update) two arrays DataInput and Tarray. Now I am trying to put this in function file which also will give me two updated arrays.
function [DataInput, Tarray] = arraybuilder(TStart, TEnd, TStep, TMag, StageMain)
T=TStart;
while T<TEnd
T=T+TStep*StageMain;
StageMain=StageMain+TMag;
DataInput(StageMain,1) = double(T);
Tarray(1, StageMain) = double(T);
end
however, it only builds one vertical array that has double-length and the first part is filled with 0 and the second one with correct answers for DataInput
Thank you for any ideas.

5 个评论

I made the following function:
function [DataInput, Tarray] = arraybuilder(TStart, TEnd, TStep, TMag, StageMain)
T=TStart;
while T<TEnd
T=T+TStep*StageMain;
StageMain=StageMain+TMag;
DataInput(StageMain,1) = double(T);
Tarray(1, StageMain) = double(T);
end
and then called it from the commnad line with:
[X Y] = arraybuilder(10,500,.001,1,0)
and the answer shows that both X and Y are 991 non-zero elements, and X(i) == Y(i) for all i.
Ok thanks, but for this set
[X Y] = arraybuilder(3.372510000000000e+02,380,.001,1,0)
it makes no sense and in main file it does.
when I run with
[X Y] = arraybuilder(3.372510000000000e+02,380,.001,1,0)
I get X and Y with 293 non-zero elements, and X(i) == Y(i) for all i.
I'm still not seeing the problem that you described.
Ok, that is just my stupidity, I was calling it using "pure" arraybuilder(3.372510000000000e+02,380,.001,1,0) and expecting to get two outputs. After calling it like you did it [X Y] it works like a charm.
Thank you.
Good! We've all been there. Mark the answer accepted, if you can.

请先登录,再进行评论。

 采纳的回答

If you don't assign the return values from a function call, then only the first is assigned to the default
ans
variable.

更多回答(0 个)

类别

帮助中心File Exchange 中查找有关 Financial Toolbox 的更多信息

产品

版本

R2019a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by