1

私はいくつかの論理/構文に苦労しています...私はいくつかのローラーを通過するときにインクの厚さを決定するシミュレーションプログラムを持っています。いくつかの機能を追加したいのですが、1xNベクターで必要な要素にアクセスできないようです。私の問題はここのどこかにあると思います:

% # Iterate through timesteps
for tt = 2:nTimeSteps
% # Fill first roller with ink
rollers(1).ink = ones(1,nBins(1));

% # Rotate all rollers
for ii = 1:N
        rollers(ii).ink(:) = ...
            circshift(rollers(ii).ink(:),rollers(ii).rotDirection);
end

% # Update all roller-connections
for ii = 1:N
    for jj = 1:nBins(ii)
        if(rollers(ii).connections(jj) ~= 0)
            index1 = rollers(ii).connections(jj);
            index2 = find(ii == rollers(index1).connections);
            ink1 = rollers(ii).ink(jj);
            ink2 = rollers(index1).ink(index2);
            rollers(ii).ink(jj) = (ink1+ink2)/2;
            rollers(index1).ink(index2) = (ink1+ink2)/2;
        end
    end
end

% # Calculate average amount of ink on each roller
for ii = 1:N
    averageAmountOfInk(tt,ii) = mean(rollers(ii).ink);

end
end

最初のローラーが「インクで満たされている」部分-ローラーは整数セグメント(nBins)に分割されており、インクが付いた要素13、14、および15のみが必要です(残りはゼロです)。行ベクトルの長さは1x95です。私はこれを行うことができないようです。私はさまざまな方法を試しましたが、最も有望だと思ったのは、ゼロの行列を作成し、その後に次のようなものを続けることでした。

rollers(1).ink(13) = 1;

など...「インクで満たす」部分の直後。これは何もしないようです(エラーさえありません)私もプログラムの出力に同様の問題があります-ローラー表面のパーセンテージでのみインクを「受け入れる」ことを望みます(たとえば約70%) )私にとっての主な不満は、操作したいデータがすぐそこにあることを知っていることです-私はそれを取得することができません!いつものように、どんなアドバイスも大歓迎です!前もって感謝します

4

1 に答える 1

1

要素13、14、および15を除いて、すべてゼロの1x95ベクトルを作成する方法はいくつかあります。

一時変数を使用する場合:

I = zeros(1, 95);
I(13 : 15) = 1;

連結を直接使用する:

[zeros(1, 12), ones(1, 3), zeros(1, 80)]

私は連結に行きます:

rollers(1).ink = [zeros(1, 12), ones(1, 3), zeros(1, 80)];
于 2013-03-06T09:51:31.920 に答える