更新向量中的各个元素

时间:2013-03-06 09:39:45

标签: matlab matrix

我正在努力学习一些逻辑/语法.... 我有模拟程序,它确定墨水厚度,因为它穿过一些辊子。我想添加一些功能,但似乎无法访问我喜欢的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%) 对我来说,主要的挫败感是我知道我想操纵的数据就在那里 - 我无法理解! 一如既往,非常感谢任何建议! 提前致谢

1 个答案:

答案 0 :(得分:1)

除了元素13,14和15之外,有几种方法可以创建一个全0的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)];