set multiple columns of matrix simultaneously

Hello,
I want to set multiple columns of a matrix to the same column vector. What I am currently doing is itterating over each column and changing them individually.
DM_sine = zeros(32);
for i=1:length(DM_sine);
DM_sine(:,i) = sin(2*pi*i/32);
end
This does what I want, but seems massively inefficient and inelegant. Is there a better alternative?

 採用された回答

Star Strider
Star Strider 2016 年 7 月 6 日

1 投票

Vectorise the first row, and then use repmat to duplicate it down the columns:
DM_sine = zeros(32);
i=1:length(DM_sine);
DM_sine = repmat(sin(2*pi*i/32), size(DM_sine,1), 1);
sample = DM_sine(1:5, 1:5) % View Sample (Not Required)
sample =
0.19509 0.38268 0.55557 0.70711 0.83147
0.19509 0.38268 0.55557 0.70711 0.83147
0.19509 0.38268 0.55557 0.70711 0.83147
0.19509 0.38268 0.55557 0.70711 0.83147
0.19509 0.38268 0.55557 0.70711 0.83147

その他の回答 (0 件)

カテゴリ

製品

タグ

質問済み:

2016 年 7 月 5 日

回答済み:

2016 年 7 月 6 日

Community Treasure Hunt

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

Start Hunting!

Translated by