Матрица отображения с ярлыками строк и столбцов

Есть ли удобный способ отображения матрицы с ярлыками строк и столбцов в терминале Matlab? Что-то вроде этого:

M = rand(5); displaymatrix(M, {'FOO','BAR','BAZ','BUZZ','FUZZ'}, ... {'ROW1','ROW2','ROW3','ROW4','ROW5'}); %?? 

получая:

  FOO BAR BAZ BUZZ FUZZ ROW1 0.1622 0.4505 0.1067 0.4314 0.8530 ROW2 0.7943 0.0838 0.9619 0.9106 0.6221 ROW3 0.3112 0.2290 0.0046 0.1818 0.3510 ROW4 0.5285 0.9133 0.7749 0.2638 0.5132 ROW5 0.1656 0.1524 0.8173 0.1455 0.4018 

Еще лучше было бы кое-что с некоторыми ASCII-художественными тонкостями:

  | FOO BAR BAZ BUZZ FUZZ -----+------------------------------------------------- ROW1 | 0.1622 0.4505 0.1067 0.4314 0.8530 ROW2 | 0.7943 0.0838 0.9619 0.9106 0.6221 ROW3 | 0.3112 0.2290 0.0046 0.1818 0.3510 ROW4 | 0.5285 0.9133 0.7749 0.2638 0.5132 ROW5 | 0.1656 0.1524 0.8173 0.1455 0.4018 

Matlab имеет функцию printmat в панели инструментов системы управления. Он находится в каталоге « ctrlobsolete », поэтому мы можем предположить, что он считается «устаревшим», но он все еще работает.

Текст справки:

 >> help printmat printmat Print matrix with labels. printmat(A,NAME,RLAB,CLAB) prints the matrix A with the row labels RLAB and column labels CLAB. NAME is a string used to name the matrix. RLAB and CLAB are string variables that contain the row and column labels delimited by spaces. For example, the string RLAB = 'alpha beta gamma'; defines 'alpha' as the label for the first row, 'beta' for the second row and 'gamma' for the third row. RLAB and CLAB must contain the same number of space delimited labels as there are rows and columns respectively. printmat(A,NAME) prints the matrix A with numerical row and column labels. printmat(A) prints the matrix A without a name. See also: printsys. 

Пример:

 >> M = rand(5); >> printmat(M, 'My Matrix', 'ROW1 ROW2 ROW3 ROW4 ROW5', 'FOO BAR BAZ BUZZ FUZZ' ) My Matrix = FOO BAR BAZ BUZZ FUZZ ROW1 0.81472 0.09754 0.15761 0.14189 0.65574 ROW2 0.90579 0.27850 0.97059 0.42176 0.03571 ROW3 0.12699 0.54688 0.95717 0.91574 0.84913 ROW4 0.91338 0.95751 0.48538 0.79221 0.93399 ROW5 0.63236 0.96489 0.80028 0.95949 0.67874 

Похоже, ваши данные имеют некоторую структуру, поэтому вы можете поместить ее в более структурированный class – dataset , входящий в набор инструментов Statistics.

 >> M = rand(5); >> dataset({M 'FOO','BAR','BAZ','BUZZ','FUZZ'}, ... 'obsnames', {'ROW1','ROW2','ROW3','ROW4','ROW5'}) ans = FOO BAR BAZ BUZZ FUZZ ROW1 0.52853 0.68921 0.91334 0.078176 0.77491 ROW2 0.16565 0.74815 0.15238 0.44268 0.8173 ROW3 0.60198 0.45054 0.82582 0.10665 0.86869 ROW4 0.26297 0.083821 0.53834 0.9619 0.084436 ROW5 0.65408 0.22898 0.99613 0.0046342 0.39978 

В качестве альтернативы, если вы публикуете свой вывод, вот один пример нескольких функций, которые будут принимать матрицу w / row, col names и создавать html-форматированную таблицу.

Я знаю, что это старый пост, но я считаю, что решение заключается в использовании array2table . В частности, в случае OP просто:

 >> M = rand(5); >> names= {'A','B','C','D','E'}; >> array2table( M, 'VariableNames', names, 'RowNames', names ) ans = ABCDE _______ _______ _______ _______ ________ A 0.81472 0.09754 0.15761 0.14189 0.65574 B 0.90579 0.2785 0.97059 0.42176 0.035712 C 0.12699 0.54688 0.95717 0.91574 0.84913 D 0.91338 0.95751 0.48538 0.79221 0.93399 E 0.63236 0.96489 0.80028 0.95949 0.67874 

Вот один быстрый и грязный подход:

 horzcat({'';'ROW1';'ROW2';'ROW3';'ROW4';'ROW5'}, ... vertcat({'FOO','BAR','BAZ','BUZZ','FUZZ'},... num2cell(rand(5)))) 

получая:

 ans = '' 'FOO' 'BAR' 'BAZ' 'BUZZ' 'FUZZ' 'ROW1' [0.3015] [0.6665] [0.0326] [0.3689] [0.6448] 'ROW2' [0.7011] [0.1781] [0.5612] [0.4607] [0.3763] 'ROW3' [0.6663] [0.1280] [0.8819] [0.9816] [0.1909] 'ROW4' [0.5391] [0.9991] [0.6692] [0.1564] [0.4283] 'ROW5' [0.6981] [0.1711] [0.1904] [0.8555] [0.4820] 

Мэтью Оберхардт, полезный код, я добавил имя в матрицу, вот он, новый код настолько простой, просто добавил еще одну переменную. А также я даю пример, чтобы использовать его, обратите внимание, что conv является матрицей mxn.

—————КОД—————

 function out = dispmat(M,name,row_labels,col_labels); %% Matthew Oberhardt % 02/08/2013 % intended to display a matrix along with row and column labels. %% ex: % M = rand(2,3); % row_labels = {'a';'b'}; % col_labels = {'c 1','c2 ','c3'}; % % if there are no labels for rows or cols, put '' as the input. % row_labels = ''; %Modified 14.07.2014 %Nestor Cantu %Added the name of the matrix. %% check that the row & col labels are the right sizes [nrows,ncols] = size(M); %% populate if either of the inputs is empty if isempty(row_labels) row_labels = cell(1,nrows); for n = 1:nrows row_labels{1,n} = '|'; end end if isempty(col_labels) col_labels = cell(1,ncols); for n = 1:ncols col_labels{1,n} = '-'; end end assert(length(row_labels)==nrows,'wrong # of row labels'); assert(length(col_labels)==ncols,'wrong # of col labels'); row_labels = reshape(row_labels,1,length(row_labels)); col_labels = reshape(col_labels,1,length(col_labels)); %% remove spaces (since they are separators in printmat.m cols = strrep(col_labels, ' ', '_'); rows = strrep(row_labels, ' ', '_'); %% create labels, space delimited c_out = []; for n = 1:length(cols) c_out = [c_out,cols{n},' ']; end c_out = c_out(1:end-1); r_out = []; for n = 1:length(rows) r_out = [r_out,rows{n},' ']; end r_out = r_out(1:end-1); %% print printmat(M,name,r_out,c_out) end 

———- ПРИМЕР с матрицей conv (5,4) ————–

 [mn] = size(conv); for i=1:n col{i} = ['K = ' num2str(i)]; end for i=1:m row{i} = ['n =' num2str(i)]; end outMat(conv,'Convergence',row',col); 

————– РЕЗУЛЬТАТ ————————–

 Convergence = K_=_1 K_=_2 K_=_3 K_=_4 K_=_5 n_=1 0.74218 0.42070 0.11101 9.86259e-006 9.86259e-006 n_=2 0.49672 0.26686 0.00233 4.46114e-011 4.46114e-011 n_=3 0.01221 0.00488 1.23422e-007 0 0 n_=4 0.00010 7.06889e-008 7.06889e-008 0 0 

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

 function out = dispmat(M,row_labels,col_labels); %% Matthew Oberhardt % 02/08/2013 % intended to display a matrix along with row and column labels. % % ex: % M = rand(2,3); % row_labels = {'a';'b'}; % col_labels = {'c 1','c2 ','c3'}; % % if there are no labels for rows or cols, put '' as the input. % row_labels = ''; %% check that the row & col labels are the right sizes [nrows,ncols] = size(M); %% populate if either of the inputs is empty if isempty(row_labels) row_labels = cell(1,nrows); for n = 1:nrows row_labels{1,n} = '|'; end end if isempty(col_labels) col_labels = cell(1,ncols); for n = 1:ncols col_labels{1,n} = '-'; end end assert(length(row_labels)==nrows,'wrong # of row labels'); assert(length(col_labels)==ncols,'wrong # of col labels'); row_labels = reshape(row_labels,1,length(row_labels)); col_labels = reshape(col_labels,1,length(col_labels)); %% remove spaces (since they are separators in printmat.m cols = strrep(col_labels, ' ', '_'); rows = strrep(row_labels, ' ', '_'); %% create labels, space delimited c_out = []; for n = 1:length(cols) c_out = [c_out,cols{n},' ']; end c_out = c_out(1:end-1); r_out = []; for n = 1:length(rows) r_out = [r_out,rows{n},' ']; end r_out = r_out(1:end-1); %% print printmat(M, '',r_out,c_out) 
Interesting Posts

Мой компьютер перезагружается, когда я говорю об отключении

Соответствует ли лицензионное соглашение?

В Word 2007, как создать таблицу пейзажей на странице портрета?

Отключите активацию панели меню, когда Alt нажата в Windows 7

Фильтрация кадра данных по значениям в столбце

Msgstr "не найдено достоверных источников sudoers, исключая" ​​ошибку, в то время как chmodding / var / www

Android: Полный контроль над телефоном (режим киоска), возможно ли это? Как?

Одновременно переключайте теги на один экран при настройке нескольких мониторов в 3.5?

Разделить строку, преобразовать ToList () в одну строку

Группа по переменному целочисленному диапазону с использованием Linq

Как заблокировать веб-сайты в файле localhost?

Каков наилучший способ отслеживания и записи URL-адресов, вызываемых устройством, для установки или просмотра истории просмотров?

Как добавить дополнительный исходный каталог для maven для компиляции и включения в сборку jar?

Настройка удаленного рабочего стола Chrome с помощью Ubuntu Gnome 14.04

Добавление новых методов в controller ресурсов в Laravel

Давайте будем гением компьютера.