関数の開始時に、次のようにしてメモリを事前に割り当てる必要があります。 integ_signal=zeros(5,4);
以下のコードを例として使用すると、integ_signal=zeros(5,4); という行をコメントアウトすると、0.1 ではなく 10.1 という望ましい答えが得られます。しかし、Matlab 関数ブロックでは、メモリを事前に割り当てる必要があります。同時にメモリを事前に割り当てるにはどうすればよいですか?
integ_signal(1,1)=10;
integ_signal=zeros(5,4);
a=zeros(10);
arr=zeros(5,4);
count=2;
a=1;
integ_signal(count,1)= integ_signal(count-1,1);
arr(count,1) = integ_signal(count,1);
arr(count,1) = arr(count,1) + abs(I(1,a)-I(1,a+1));
(Desired answer, without pre-allocating memory)
>> arr
arr =
0 0 0 0
10.1000 0 0 0
0 0 0 0
0 0 0 0
0 0 0 0
(Wrong answer, with pre-allocating memory)
>> arr
arr =
0 0 0 0
0.1000 0 0 0
0 0 0 0
0 0 0 0
0 0 0 0
function integ_signal= fcn(I,V,count,oldval)
integ_signal=zeros(5,1);
a=zeros(10); arr=zeros(2,4);
if count==1
integ_signal(count,1) = 10; % Initial Condition end
if count>1
integ_signal(count,1)= integ_signal(count-1,1);
arr(count,1) = integ_signal(count,1);
arr(count,1) = arr(count,1) + abs(I(1,a)-I(1,a+1));
end
a=a+1;
end
カウントが 2 に増えると、カウントが 1 のときに値を取得する必要がありますが、事前割り当てにより、以前のすべての値に常に値ゼロが与えられます。