赋值时如何访问向量索引?
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;
等等
我正在尝试在 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;
等等