0

関数の開始時に、次のようにしてメモリを事前に割り当てる必要があります。 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 のときに値を取得する必要がありますが、事前割り当てにより、以前のすべての値に常に値ゼロが与えられます。

4

1 に答える 1

4

私があなたの質問を誤解していたら、私を許してください10。最初の 2 行を入れ替えるつもりはありませんでしたか?

integ_signal = zeros(5,4);
integ_signal(1,1) = 10;
于 2013-11-07T08:31:01.970 に答える