matlab - 用于创建重复元素向量的 for/while/if 程序

标签 matlab if-statement for-loop while-loop vectorization

我的任务是编写一个程序来创建一个向量,它的前 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 和一般编程的新手。我正在考虑如何使用 whileif 循环来构造它,但无法产生更高效的代码。)

最佳答案

由于我们正在采用各种方式来执行此操作,因此有些不同(尽管可能效率不高):

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/

相关文章:

matlab - 可能有几个 MATLAB 命令窗口?

打印或导出时无法正确呈现 Matlab 字体

java - 禁止程序输入小于1的数字(if else/switch)

if-statement - 使用 Leaf,虽然 if 是,但 else 条件没有正确执行

javascript - 多维数组中的循环未显示预期内容

c++ - for循环:指针变量作为if语句中的条件的必要性

matlab - 动态访问 Matlab 中的嵌套字段

matlab - MATLAB 中巨大矩阵的行列式

c - C 中的嵌套 for 循环无法按预期工作

javascript - Javascript 中的 for 循环中的 for 循环