在函数内更改向量中的一个元素

Changing one element in a vector within a function

我想更改向量中的单个元素:

function vecteur_avec_delai=delai(input_vecteur, iteration)
    vecteur_avec_delai(iteration,1) =  input_vecteur(iteration,1);
end

input_vecteur 是大小为 6001 × 1 的向量,其中填充了相同的值: 61.46vecteur_avec_delai = ones(6001,1)

我想将 vecteur_avec_delai 的一个值更改为 61.46,因此仍然有一个长度为 6001 的向量,其中填充了一个值等于 61.46 的单元格,因此 vecteur_avec_delai(iteration,1) = input_vecteur(iteration,1);

当我 运行 :

vecteur_avec_delai=delai(input_vecteur, iteration)

它编译但给我输出一个 vecteur_avec_delai 大小 (iteration, 1 ) 填充 0s 除了最后一个值等于 61.46.

当我“手动”尝试此操作(直接在 MATLAB 命令 window 中)时,它有效,那么为什么当我执行此函数时它不起作用?

您尚未将 vecteur_avec_delai 声明为函数的输入。这归结为在一个干净的命令 window 中调用 A(10,1) = 1:它创建一个 10×1 的向量,其中有 9 个零,最后是一个 1。相反,首先将您的数组声明为 ones,然后仅设置此必需元素:

function vecteur_avec_delai=delai(input_vecteur, iteration)
    vecteur_avec_delai = ones(size(input_vecteur));
    vecteur_avec_delai(iteration,1) =  input_vecteur(iteration,1);
end

或者,根据您对它在命令 window 中工作的评论,只需将 vecteur_avec_delai 添加到函数的输入(您可能希望将输入和输出变量的名称更改为为清楚起见不相同)。函数是封闭的 name-spaces,也就是说,它们有自己的“工作区”,并且看不到该函数之外的任何东西,因此需要声明所有输入。