Заполнение матрицы значениями из массива в MATLAB - PullRequest
0 голосов
/ 14 октября 2018

У меня есть следующие массивы,

Names = [string('abc') string('def') string('ghi') string('jkl')]
SubName1 = [string('abc') string('jkl')]
SubValue1 = [-1 1]
SubName2 = [string('ghi') string('jkl')]
SubValue2 = [-2 1]

Массив с именем SubValue1 содержит значения, соответствующие ключам (строкам) в массиве с именем SubName1. Я хочу сравнить SubNameс помощью Names и создайте матрицу, которая отображает пару ключ-значение следующим образом

RowName  SubName1 SubName2
abc          -1       0
def           0       0 
ghi           0      -2
jkl           1       1

Чтобы получить вышеуказанную матрицу, я пытаюсь сделать следующее:

Index1 = find(ismember(Names,SubName1))
Index2 = find(ismember(Names,SubName2))

>>Index1 = [1 4];
>>Index2 = [3 4];

I'mне уверен, как действовать отсюда.По сути, я пытаюсь заполнить столбцы матрицы значениями SubValue ключей SubNames по индексам, присутствующим в Index.

Есть предложения?

1 Ответ

0 голосов
/ 14 октября 2018

Вы почти у цели.Создайте пустые векторы и используйте логическое индексирование с Index1 и Index2, чтобы вставить значения из SubValue1 и SubValue2:

>> Names = [string('abc') string('def') string('ghi') string('jkl')];
>> SubName1 = [string('abc') string('jkl')];
>> SubValue1 = [-1 1];
>> SubName2 = [string('ghi') string('jkl')];
>> SubValue2 = [-2 1];

>> Index1 = find(ismember(Names,SubName1))
>> Index2 = find(ismember(Names,SubName2))

>> SubName1 = zeros(numel(Names),1);
>> SubName2 = zeros(numel(Names),1);

>> SubName1(Index1) = SubValue1;
>> SubName2(Index2) = SubValue2;

>> t = table(Names.',SubName1,SubName2);
>> t.Properties.VariableNames(1) = {'RowName'}

t =

  4×3 table

    RowName    SubName1    SubName2
    _______    ________    ________

     "abc"        -1           0   
     "def"         0           0   
     "ghi"         0          -2   
     "jkl"         1           1   

Обратите внимание, что практика именования переменных, таких как SubName1 и SubName2 обычно не рекомендуется.Вы не против найти этот MATLAB ответы пост полезными.

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