For loop 我正在学习一个基于多项式函数(8x+;3x^2+;3x^3)mod N创建行向量a的代码

For loop 我正在学习一个基于多项式函数(8x+;3x^2+;3x^3)mod N创建行向量a的代码,for-loop,polynomials,For Loop,Polynomials,我对这个循环如何得到结果a有点困惑。 为什么A被定义为A=[];最后A和c合并了吗 你能帮我理解一下这个代码的工作原理吗?设置A=[]只是将A初始化为一个空矩阵(或向量),以后可以添加内容。当你有A=[ac]它将c附加到A。这是将多项式值c添加到A的位置,用于1:N中的每个术语 请注意,最佳做法不是将元素附加到循环中的向量,而是使用a=zero(1,N)预先分配元素,这只会创建a一次。然后可以使用A(ix)=c在每次迭代中添加值c。这会更有效,但如果N较小,则不会产生太大影响。这有助于在您的问题

我对这个循环如何得到结果a有点困惑。 为什么A被定义为A=[];最后A和c合并了吗


你能帮我理解一下这个代码的工作原理吗?

设置
A=[]
只是将
A
初始化为一个空矩阵(或向量),以后可以添加内容。当你有
A=[ac]它将
c
附加到
A
。这是将多项式值
c
添加到
A
的位置,用于
1:N
中的每个术语


请注意,最佳做法不是将元素附加到循环中的向量,而是使用
a=zero(1,N)
预先分配元素,这只会创建
a
一次。然后可以使用
A(ix)=c
在每次迭代中添加值
c
。这会更有效,但如果
N
较小,则不会产生太大影响。

这有助于在您的问题中添加相关的语言标记(似乎是Matlab)。先生,在计算c=c+mod(coeff(i)*temp,N);。什么c=模(c,N);是否?
c=mod(c,N)
将确保
c
介于
0
N
之间。尽管
mod(coeff(i)*temp,N)
已经确保添加到
c
的是模
N
,但自从添加后,它可以将
c
推过模,这就是再次使用
mod
的原因。如果我定义了一个简单的矩阵并想要排列它的原始位置<代码>mat=[1 2 3;4 5 6;7 8 9]
B=重塑(mat)
B=[1 4 7 2 5 8 3 6 9]根据矩阵索引,B的元素将按A定义的位置排列。
mat_new=B(A)
matu_new=[5 3 8 4 2 7 6 1 9]
dec=mat\u new
dec(A)=dec
%dec=[1 4 7 2 5 8 3 6 9]。
dec(A)=dec
如何将原始矩阵取回?因为这与原始帖子无关,所以最好创建一个新问题。其他人可能有同样的问题,他们不太可能在评论中找到。先生,我已经创建了一个,但没有得到任何回应。这是链接:
coeff = [8 3 3];  %%poly_function 
A = []; N=9;
for ix = 1:N;
    c = 0;
for i = 1:3
    temp=1;
    for k=1:i
        temp=mod(temp*ix,N);
    end
    c = c + mod(coeff(i)*temp ,N);
    c = mod(c, N);
    if c == 0; c = N; end
end
A = [A c]; %%A = [5 7 6 2 4 3 8 1 9]
end