how can i vectorize this for loop?

1 次查看(过去 30 天)
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 个评论
Walter Roberson
Walter Roberson 2017-7-22
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 个)

类别

Help CenterFile Exchange 中查找有关 Matrix Indexing 的更多信息

产品

Community Treasure Hunt

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

Start Hunting!

Translated by