MATLAB: печать сравнительных столбцов для элементов из разных векторов - PullRequest
3 голосов
/ 15 ноября 2010

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

>> a = [5.47758 7.46578 3.45323]
a =

5.4776    7.4658    3.4532

>> b = [5.65432 4.45678 2.34789]

b =

5.6543    4.4568    2.3479

Теперь, если я напишу

>> sprintf('%.2f %.2f\n',a, b)

Я получаю следующий ответ от Matlab

ans =
5.48 7.47
3.45 5.65
4.46 2.35`

Но как бы я хотел видеть это представление ценностей, это

ans =
5.48 5.65  
7.47 4.46 
3.45 2.35

Как я могу использовать функцию sprintf (или другую функцию или способ), чтобы получить вышеуказанное представление? Спасибо.

Ответы [ 2 ]

3 голосов
/ 15 ноября 2010

Вы можете решить эту проблему, объединяя a и b в один входной аргумент матрицы 2 на 3:

>> sprintf('%.2f %.2f\n',[a; b])

ans =

5.48 5.65
7.47 4.46
3.45 2.35

Функция SPRINTF работает путем многократного повторного использования строки форматирования, когда она проходит (в порядке столбцов) элементы каждого из входных аргументов в порядке их ввода . Вот почему в вашем примере печатаются все значения a, , а затем все значения b вместо чередования значений a и b.

0 голосов
/ 23 ноября 2010

Если вы просто «печатаете» его на экране, вы можете ввести в консоли MATLAB (или «Окно команд»):


a = [5.47758 7.46578 3.45323];
b = [5.65432 4.45678 2.34789];

c = [a',b']; % Transposing each row vector into a column vector before forming a matrix

c =

    5.4776    5.6543
    7.4658    4.4568
    3.4532    2.3479

Это упростит процесс сортировкиматрица по строкам, например, с помощью команды 'sortrows' (см. документацию по `sortrows 'для ее использования:" help sortrows "или" doc sortrows ").

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...