赋值时如何访问向量索引?

How can I access my vectors indices when I am assigning values?

我正在尝试在 Matlab 中编写一些代码,它涉及大量访问向量中的元素。下面是我正在处理的代码片段:

x(1)=1;

for i=2:18
    x(i)=0;
end

for i=1:18
    y(i)=1;
end

for i = 0:262124
    x(i+18+1) = x(i+7+1) + mod(x(i+1),2); 
    y(i+18+1) = y(i+10+1) + y(i+7+1) + y(i+5+1) + mod(y(i+1), 2);  
end

% n can be = 0, 1, 2,..., 262142
n = 2;

for i = 0: 262142
   z(i+1) = x(mod(i+n+1, 262143)); %error: Subscript indices must either be real positive integers or logicals.    
end  

在我初始化向量 z() 的最后一个“for”循环中,我收到一条错误消息:“下标索引必须是实数正整数或逻辑数。”但是,当我不通过省略分号来抑制 z(i+1) 时,程序能够 运行,并且我可以在工作区中看到 z 的值。这是为什么?

我在 Matlab 中编写的代码基于下图中显示的一系列指令。但是,我似乎无法追踪导致我无法访问 x() 元素的错误(不抑制 z() 的输出)。

我很感激任何想法 :-) 谢谢!

代码在该循环的最后一次迭代中中断,因为对于 i=262140 你得到

(mod(i+n+1, 262143)) = 0

所以你无法在 matlab 中访问 x(0)。任何变量的第一个元素是 x(1).

此外,与您的问题无关,这段代码没有使用 matlab 的优势,而是

for i=2:18
    x(i)=0;
end

你可以只写:

x(2:18)=0;

等等