有没有办法将这个Matlab/倍频程代码矢量化

有没有办法将这个Matlab/倍频程代码矢量化,matlab,vectorization,octave,Matlab,Vectorization,Octave,其中y是包含1到10的整数的列向量,请使用线性索引: Y=zeros(length (y),10) for c=1:length(y) Y(c,y(c))=1 end 换句话说:您的代码已经矢量化了。您只是重复了很多次,但每次都是向量化的。@AnderBiguri抱歉,我在循环变量中写了k而不是c。y(c)应该是y,因为sub2ind将向量作为第二个和第三个参数,c应该是c',因为y是列向量,而c是行向量。谢谢你的回答,我会在你编辑后将其标记为正确答案。@BaidyanathKunduy(c)

其中y是包含1到10的整数的列向量,请使用线性索引:

Y=zeros(length (y),10)
for c=1:length(y)
Y(c,y(c))=1
end

换句话说:您的代码已经矢量化了。您只是重复了很多次,但每次都是向量化的。@AnderBiguri抱歉,我在循环变量中写了k而不是c。y(c)应该是y,因为sub2ind将向量作为第二个和第三个参数,c应该是c',因为y是列向量,而c是行向量。谢谢你的回答,我会在你编辑后将其标记为正确答案。@BaidyanathKundu
y(c)
是一个向量,但正如你所说,它与本例无关。在您的问题中,无法知道
y
是行还是列,因为您尚未共享该信息。我将不编辑这个问题。请阅读问题,因为我从一开始就提到y是我代码下面的一个列向量,因为y是一个向量,y(c)是一个元素而不是向量。@BaidyanathKundu请记住始终提供一个。为您的满意而编辑。
Y=zeros(length (y),10)
c=1:length(y)
indices=sub2ind(size(Y),c.',y(c));
Y(indices)=1;