我的任务是编写一个程序来创建一个向量,它的前 10 个元素为 10,元素 11-20 为 20,元素 21-30 为 30,元素 31-40 为 40,& 元素41-50 为 50。
我就是这样做的。
v=zeros(1,50);
for i = 1:10
v(i)=10;
end
for i =11:20
v(i)=20;
end
for i = 21:30
v(i)=30;
end
for i = 31:40
v(i)=40;
end
for i = 41:50
v(i)=50
end
我怎样才能更有效地写这个? (我是 matlab 和一般编程的新手。我正在考虑如何使用 while
或 if
循环来构造它,但无法产生更高效的代码。)
最佳答案
由于我们正在采用各种方式来执行此操作,因此有些不同(尽管可能效率不高):
v=sort(mod(10:10:500,50))+10;
还有一种类似于 rayryeng 的回答的方法,但我认为效率稍微高一些(避免调用 bsxfun
):
v = 10:10:50;
v = v(ones(10,1),:);
v = v(:)';
关于matlab - 用于创建重复元素向量的 for/while/if 程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39885732/