Multiplying Vector by Constant that Depends on Vector Elements

Given a vector containing values 1 through 1000, I would like to multiply the vector elements by constant C1 if they range from 1-100, by constant C2 if they range from 100-200, etc...
Is there a simpler way to do this than iterating through the vector?
for i = 1:size(vector,2);
if vector(i) < 100
C = C1;
else if vector(i) < 200
C = C2;
end
result(i) = vector(i) * C;
end

1 件のコメント

Jan
Jan 2011 年 11 月 2 日
No space between "else" and "if".

サインインしてコメントする。

 採用された回答

Jan
Jan 2011 年 11 月 2 日

0 投票

Mult = ones(size(vector));
Mult(vector < 200) = C2; % The largest limit at first!
Mult(vector < 100) = C1;
result = vector .* Mult;

2 件のコメント

Jan
Jan 2011 年 11 月 3 日
There have been some other good solutions which perform the distribution to the different intervals automatically. Unfortunately they have been deleted.
The 2nd output of HISTC could be useful also.
Andrei Bobrov
Andrei Bobrov 2011 年 11 月 3 日
vector=randi([1 100],38,1);
[~,b] = histc(vector,0:100:1000);
C = randi(125,10,1);
result = C(b).*vector;

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File ExchangeMathematics についてさらに検索

質問済み:

2011 年 11 月 2 日

Community Treasure Hunt

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

Start Hunting!

Translated by