how can i vectorize this for loop?

close all
clear all
clc
tic;
i=1;
for k=1:0.5:10;
for a=1:0.5:5;
numpl(i,:) =k;
denpl(i,:) =[1 a 0];
i=i+1;
end
end
w=[.1,.5,.8,1,2,8,15,50,100];
P=freqcp(numpl,denpl,w);
toc

 采纳的回答

alice
alice 2017-7-21
编辑:alice 2017-7-21
You could do:
n1 = numel(1:0.5:10);
n2 = numel(1:0.5:5);
numpl2 = repelem(1:0.5:10,n2)';
denpl2 = repmat([ones(n2,1),(1:0.5:5)',zeros(n2,1)],n1,1);
ps: you can edit your code with the button '{} Code' when you write a question, in order to make it easier to read.

3 个评论

this solution is not execute in the matlab.I got this error "Undefined function 'repelem' for input arguments of type 'double'.
Error in Untitled11 (line 5) numpl2 = repelem(1:0.5:10,n2)';" while executing this solution
Rewritten:
v1 = 1:0.5:10;
v2 = 1:0.5:5;
n1 = numel(v1);
n2 = numel(v2);
numpl2 = repmat(v1, 1, n2)';
denpl2 = repmat([ones(n2,1), v2.', zeros(n2,1)] ,n1, 1);

请先登录,再进行评论。

更多回答(0 个)

类别

帮助中心File Exchange 中查找有关 Programming 的更多信息

产品

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by