2012-06-21 3 views
0

У меня есть матрица (a) с (1:10), < 10 x 1> double. Я хотел бы скопировать значения и переставить их столбцами в другую матрицу var. (Б). См. Пример ниже. Кроме того, какой метод был бы наиболее эффективным в этой задаче?matlab эффективное копирование матрицы

matrix a matrix b 

1   1 
2   2 2 
3   3 3 3 
4   4 4 4 4 
5   5 5 5 5 5 
6   6 6 6 6 6 6 
7   7 7 7 7 7 7 7 
8   8 8 8 8 8 8 8 8 
9   9 9 9 9 9 9 9 9 9 
10   10 10 10 10 10 10 10 10 10 10 

обновление: Привет еще раз Amro. Как насчет того, хочу ли я определять, какие значения нужно копировать. Ниже пример:

matrix a matrix b 
column:  1 2 3 4 5 6 7 

1   1 
2   2 2 
3    3 3 
4     4 
5      5 
6      6  
7      7 
8      8  
9       9 
10       10 10 

ответ

2

Try:

>> a = (1:10)' 
a = 
    1 
    2 
    3 
    4 
    5 
    6 
    7 
    8 
    9 
    10 

>> b = tril(repmat(a,1,10)) 
b = 
    1  0  0  0  0  0  0  0  0  0 
    2  2  0  0  0  0  0  0  0  0 
    3  3  3  0  0  0  0  0  0  0 
    4  4  4  4  0  0  0  0  0  0 
    5  5  5  5  5  0  0  0  0  0 
    6  6  6  6  6  6  0  0  0  0 
    7  7  7  7  7  7  7  0  0  0 
    8  8  8  8  8  8  8  8  0  0 
    9  9  9  9  9  9  9  9  9  0 
    10 10 10 10 10 10 10 10 10 10 
+0

hi amro Вы можете посмотреть мой обновленный запрос. – Buntalan

+0

@ BernardUntalanJr: Боюсь, что ваша новая спецификация не завершена. Как вы определяете, какие значения копируются? – Amro

+0

Я сделал ошибку asinine. В любом случае пользователь1434725 предоставил решение. Спасибо за решение первой части моего вопроса. – Buntalan

1

Я думаю, во второй матрице вы указали вы сделали ошибку. Я предполагаю, что вы хотите сделать что-то вроде этого:

b = 

1  0  0  0  0  0 
2  2  0  0  0  0 
0  3  3  0  0  0 
0  0  4  4  0  0 
0  0  0  5  5  0 
0  0  0  0  6  6 

это просто сделать:

%define vector of arbitrary length 
a=1:6; 
%generate b with shifted diagonal matrices 
b=diag(a)+diag(a(2:end),-1); 

второй аргумент DIAG просто сдвигается в результате диагонали.

+0

Действительно я непреднамеренно допустил ошибку. Спасибо за ответ! – Buntalan

Смежные вопросы