How to expand a row of values into a matrix, such that each new value is equal to the value above it plus one?

14 次查看(过去 30 天)
What I'm asking for is a lot simpler to show than to explain. If I have a vector such as, for example:
[5 10 15]
ans = 1x3
5 10 15
<mw-icon class=""></mw-icon>
<mw-icon class=""></mw-icon>
How can I expand the vector for any integer length n (for this example let's say n=3) into a matrix such that:
[5 10 15; 6 11 16; 7 12 17]
ans = 3x3
5 10 15 6 11 16 7 12 17
<mw-icon class=""></mw-icon>
<mw-icon class=""></mw-icon>
I know there's a brute force solution with for-loops, but I'm trying to avoid for-loops where I can and stick to vectorization for efficiency. Is there anything I can use?

采纳的回答

Voss
Voss 2024-6-27,17:02
v = [5 10 15];
n = 3;
m = v+(0:n-1).'
m = 3x3
5 10 15 6 11 16 7 12 17
<mw-icon class=""></mw-icon>
<mw-icon class=""></mw-icon>

更多回答(1 个)

Umar
Umar 2024-6-27,17:03
Hi Marco,
By using bsxfun with element-wise addition and transpose to adjust dimensions, you can efficiently expand the vector into a matrix without resorting to for-loops, ensuring a more vectorized and optimized solution.
For more information regarding bsxfun, please refer to
https://www.mathworks.com/help/matlab/ref/bsxfun.html
Hope that answers your question.

类别

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

产品


版本

R2023a

Community Treasure Hunt

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

Start Hunting!

Translated by