Как объединить две матрицы по столбцам со строками, разделенными запятой? - PullRequest
0 голосов
/ 29 мая 2018

У меня есть две матрицы

A = [   1  3
        4  3]  
B  = [  2  1 
        4  1 ]

Я хочу объединить A и B для получения массива строк

C = [  "1,2"   "3,1" 
       "4,1"  "3,1"  ]

Как я могу сделать это в MATLAB?Я пробовал это так

for i = 1: 4; 
    for j = 1: 4; 
        fprintf('%0.2f,%0.2f\n',A(i,j),B(i,j) ) 
    end 
end

Ценю ваши предложения!

Ответы [ 2 ]

0 голосов
/ 29 мая 2018
  A = [1 3; 4 3];
  B = [2 1; 4 1];
  C = A + "," + B

 C = 

   %  2×2 string array

    %  "1,2"    "3,1"
    %  "4,4"    "3,1"
0 голосов
/ 29 мая 2018

Первое, что нужно отметить, это то, что есть разница между строками "string" и символьными массивами 'character array'.В то время как строки - это одна сущность, массив символов - это массив символов.

Таким образом, вы можете сделать следующее присвоение

A(1) = "Hello";

, но не

B(1) = 'Hello';

, поскольку B(1) - это одно значение, а 'Hello' - это 5 значений (H, e, l, l, o).

Во-вторых, вы не можете использовать fprintf, как вы предлагаете в комментариях, поскольку он печатает только (как в его названии), а переменная, возвращаемая fprintf, равнаколичество напечатанных символов.Вместо этого для построения строки используйте strcat вместе с num2str, так что вы получите:

A = rand(2); %some matrices
B = rand(2);

for i = 1:2
    for j = 1:2
        C(i,j) = strcat(num2str(A(i,j)),",",num2str(B(i,j)));
    end
end

РЕДАКТИРОВАТЬ: Если вы все равно собираетесь поменять запятую на \pm в LaTeX, вы можете просто сделать это при создании C, используя вместо этого

C(i,j) = strcat(num2str(A(i,j)),"\pm",num2str(B(i,j)))

.

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