Octave 倍频程:用向量替换matix/vector的元素

Octave 倍频程:用向量替换matix/vector的元素,octave,Octave,我试图将矩阵中的每个元素从1到10的值转换为10x1的零矩阵,其中零矩阵中的元素对应于原始元素的值等于1 代码如下: 函数q=convert %将y矩阵值转换为10x1矢量 荷载(“y.mat”); 零=零(10,1); %设置10x1的零矩阵 对于i=1:长度(y) 零(y(i))=1;%将零的yth元素设置为1 y(i)=零;%将y的第i个元素设置为新的零 零=零(10,1);%重新归零 外循环 当我运行它时,我得到错误A(I)=X:X的大小必须与I相同。其中,我试图输入的矩阵与矩阵y的元

我试图将矩阵中的每个元素从1到10的值转换为10x1的零矩阵,其中零矩阵中的元素对应于原始元素的值等于1

代码如下:

函数q=convert
%将y矩阵值转换为10x1矢量
荷载(“y.mat”);
零=零(10,1);
%设置10x1的零矩阵
对于i=1:长度(y)
零(y(i))=1;%将零的yth元素设置为1
y(i)=零;%将y的第i个元素设置为新的零
零=零(10,1);%重新归零
外循环
当我运行它时,我得到错误
A(I)=X:X的大小必须与I
相同。其中,我试图输入的矩阵与矩阵y的元素大小不一致。我能绕开这个吗

样本输入:

y = [1; 2; 3; 4; 5] 
样本输出:

y = [[1;0;0;0;0;0;0;0;0;0], 
     [0;1;0;0;0;0;0;0;0;0], 
     [0;0;1;0;0;0;0;0;0;0],
     [0;0;0;0;1;0;0;0;0;0],
     [0;0;0;0;0;1;0;0;0;0]]

我将做几个假设:

  • 您希望返回值为函数签名中的
    q
    ,并且
  • 您希望示例案例中的输出为10x5矩阵,如下所示:

    1   0   0   0   0
    0   1   0   0   0
    0   0   1   0   0
    0   0   0   1   0
    0   0   0   0   1
    0   0   0   0   0
    0   0   0   0   0
    0   0   0   0   0
    0   0   0   0   0
    0   0   0   0   0
    

  • 修复环路

    出现错误的问题是,您将
    10x1
    向量
    0
    分配给
    5x1
    向量
    y
    的单个(标量)元素:

    y(i) = ZERO;
    

    向量不适合于标量。但是,即使您将其更改为将
    ZERO
    分配给
    y
    的列,它也不适合,因为列的长度不同。无论如何,这不是您想要做的,因为如果它起作用的话,您可能会删除
    y
    中的值。因此,让我们在输出数组
    q
    的列中设置值。(更改以
    标记,您能给我们一些示例输入和相应的预期输出吗?y=[1;2;3;4;5]输入和y=[1;0;0;0;0;0;0;0];[0;1;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0输出。我通过在需要的地方逐个元素地进行转换来解决这个问题。我更愿意像这样一步一步地完成。