Вектор в скаляр - PullRequest
       2

Вектор в скаляр

0 голосов
/ 11 января 2019

У меня есть простая проблема, которую я не могу найти простое решение для ...

У меня есть вектор x

x = [1, 2, 3, 4]

Я бы хотел превратить этот вектор в скаляр, где скаляр состоит из значений x.

например:

>> y = compressvec(x)
   y = 
       1234

Было бы хорошо, если бы решение работало и с массивами, рассматривая каждую строку как свой собственный вектор

например:

x = [1, 2, 3, 4; 5, 6, 7, 8]

>> y = compressvect(x)
   y = 
       1234
       5678

 >> size(y)
    ans =
         2     1 

1 Ответ

0 голосов
/ 11 января 2019

Вот несколько способов сделать это:

  • Преобразовать в символы, затем интерпретировать как число base-10:

    y = base2dec(char(x+'0'), 10);
    
  • Аналогично, через массив ячеек векторов символов:

    y = str2double(cellstr(char(x+'0')));
    
  • Прямой арифметический подход с использованием умножения матриц:

    y = x * 10.^(size(x,2)-1:-1:0).';
    
  • Аналогично, используя поэлементное умножение с широковещанием:

    y = sum(bsxfun(@times, x, 10.^(size(x,2)-1:-1:0)), 2);
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...