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

有几种方法可以创建一个全为零的 1x95 向量,除了元素 13、14 和 15:

使用临时变量:

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 回答