how to multiply simplest way this two vectors ?

2 ビュー (過去 30 日間)
x y
x y 2014 年 12 月 3 日
コメント済み: Stephen23 2014 年 12 月 3 日
I have to multiply this xi and y this way:
xi = [98 99 100 101 102 103]; y = [2 4 6 4 3 1]; x = [ 98*ones(1,2), 99*ones(1,4), 100*ones(1,6), 101*ones(1,4),... 102*ones(1,3), 103*ones(1,1) ]
it is possible to somthing this to make.... x = xi.*( ones(1,y(1:end)) ) % this is not working
  1 件のコメント
Stephen23
Stephen23 2014 年 12 月 3 日
Note that this is array replication , not multiplication .

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

採用された回答

Azzi Abdelmalek
Azzi Abdelmalek 2014 年 12 月 3 日
編集済み: Azzi Abdelmalek 2014 年 12 月 3 日
xi = [98 99 100 101 102 103];
y = [2 4 6 4 3 1];
x=cell2mat(arrayfun(@(a,b) a*ones(1,b),xi,y,'un',0))
%or you can do it just by using a for loop

その他の回答 (2 件)

Guillaume
Guillaume 2014 年 12 月 3 日
編集済み: Guillaume 2014 年 12 月 3 日
This is not a multiplication.
One of many ways to do what you want:
xi = [98 99 100 101 102 103];
y = [2 4 6 4 3 1];
x = cell2mat(arrayfun(@(v, r) repmat(v, 1, r), xi, y, 'UniformOutput', false))

Andrei Bobrov
Andrei Bobrov 2014 年 12 月 3 日
a = accumarray(cumsum([1; y(:)]),1);
x = xi(cumsum(a(1:end-1)));

カテゴリ

Help Center および File ExchangeCreating and Concatenating Matrices についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by