11

Вопрос по triangular, matrix, matlab – undefined

Допустим, у меня есть такой вектор:

A = [101:105]

Что на самом деле:

[ 101, 102, 103, 104, 105 ]

И я хотел бы использовать только векторные / матричные функции и операторы для получения матрицы:

101 102 103 104 105
102 103 104 105 0
103 104 105 0   0
104 105 0   0   0
105 0   0   0   0

или следующая матрица:

101 102 103 104 105
0   101 102 103 104
0   0   101 102 103
0   0   0   101 102
0   0   0   0   101

Любые идеи кто-нибудь?

(Я очень новичок в MATLAB, но я оседлал этот материал ...)

  • Error: User Rate Limit Exceeded

    от Shalom Craimer
  • Error: User Rate Limit Exceeded

    от
  • Error: User Rate Limit Exceeded

    от Shalom Craimer
  • Мне разрешено зацикливаться на этом; Мне сказали, что циклы влекут за собой значительное снижение производительности. Поэтому я ломал голову, пытаясь понять, как избежать петель, и, наконец, решил спросить об этом.

    от Shalom Craimer
  • Что-то подсказывает мне, что кто-то с 1834 репутацией не публикует домашние задания для SO.

    от SCFrench
  • Да, я знаю, это звучит как домашнее задание; Это просто случай, когда я беру на себя работу консультанта, которого моя компания больше не может себе позволить. Я не знаю достаточно о MATLAB, чтобы не походить на новичка.

    от Shalom Craimer
  • Для меня это похоже на домашнее задание - если нет, то почему тебе не разрешено все это делать? Обратите внимание, что если это домашняя работа, это все еще допустимый вопрос для SO, но он должен иметь тег [homework].

    от Tomas Aschan
  • 25

    hankel(A) даст вам первую матрицу

    triu(toeplitz(A)) достану тебе второй.

    --Loren

  • 2

    Я хотел бы создать матрицу

    A:

    101 102 103 104 105
    101 102 103 104 105
    101 102 103 104 105
    101 102 103 104 105
    101 102 103 104 105
    

    А потом найти матрицуB такой, что когда вы умножаетеA*B Вы получите желаемый результат. В основном, сначала делайте линейную алгебру на бумаге, а затем пусть Matlab сделает вычисления.

  • 2

    Для генерации таких треугольных матриц с таким регулярным шаблоном исп

    ользуйте функцию Теплица, например,

    m=toeplitz([1,0,0,0],[1,2,3,4])
    

    для другого случая используйтеrot90(m)

  • 3

    Лучшие решения перечислены

    Loren, Также возможно создавать эти матрицы с использованиемSPDIAGS:

    vec = 101:105;
    A = full(spdiags(repmat(vec,5,1),0:4,5,5));  % The second matrix
    B = fliplr(full(spdiags(repmat(fliplr(vec),5,1),0:4,5,5)));  % The first matrix
    

    Я вспоминаю создание таких полосчатых матриц до того, как узнал о некоторых встроенных функциях, упомянутых Лорен. Это не так просто и чисто, как их использование, но это сработало. знак равно