how to multiply simplest way this two vectors ?

1 回表示 (過去 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 ExchangeMultidimensional Arrays についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by