Предположим, у меня есть такая матрица:
a =
1 2
3 4
Я хочу увеличить размер матрицы вдвое и создать что-то вроде этого:
aa =
1 1 2 2
1 1 2 2
3 3 4 4
3 3 4 4
Таким образом, каждый элемент в первой матрице распространяется на четыре элемента в большей матрице.
a(i,j) == aa(2*i-1, 2*j-1)
== aa(2*i , 2*j-1)
== aa(2*i-1, 2*j)
== aa(2*i , 2*j)
Есть ли для этого какие-либо предопределенные функции?
Определенно я могу сделать это двумя петлями, но я хочу самый простой и чистый способ!
2
Mehran
29 Янв 2013 в 09:06
2
mathworks.com.au/matlabcentral/answers/…
– Fabian Tamp
29 Янв 2013 в 09:12
1 ответ
Лучший ответ
Используйте kron
- тензорный продукт Кронекера:
kron(a,ones(2))
ans =
1 1 2 2
1 1 2 2
3 3 4 4
3 3 4 4
7
bla
29 Янв 2013 в 09:18
1
Спасибо, А еще я нашла другой способ. с помощью
– resizem(a, 2)
.
Mehran
30 Янв 2013 в 11:12
1
Круто, не знал об этой функции. Тем не менее, я вижу, что необходим набор инструментов Mapping. Бьюсь об заклад,
– kron
быстрее :)
bla
30 Янв 2013 в 11:18
Похожие вопросы
Связанные вопросы
Новые вопросы
matlab
MATLAB - это высокоуровневая языковая и интерактивная среда программирования для численных расчетов и визуализации, разработанная MathWorks. Не используйте оба тега [matlab] и [octave], если явно не задан вопрос о сходстве или различии между ними. При использовании этого тега, пожалуйста, укажите версию MATLAB, с которой вы работаете (например, R2017a).