Как создать числовой массив из строки в MATLAB? - PullRequest
2 голосов
/ 21 декабря 2011

Как создать числовой массив из строки в Matlab?

Например, у меня есть такая строка:

>> str = dec2bin(7);
s = 111

Мне нужен массив [1 1 1].Как это сделать?

Я вижу strread function strread , но у меня возникают трудности с его использованием при вводе строки без пробелов.

Ответы [ 5 ]

2 голосов
/ 22 декабря 2011

Стандартным решением является использование решения, отправленного yuk,

a = (str == '1');

, которое дает логический результат.Если вам нужен двойной,

a = double(str == '1');

или даже просто:

a = +(str == '1');

Возможно, самое простое решение выглядит так:

a = str - 48;

, хотя я думаю, чтопоследний наименее очевиден относительно того, что он делает.Я предпочитаю код, который легко читать и понимать цель.Эта цель лучше всего достигается с помощью второго решения, ИМХО.

2 голосов
/ 22 декабря 2011

Только что ответил на другой вопрос и нашел, что часть его может быть полезна здесь.

Вы можете преобразовать такую ​​строку в логический вектор:

a = str == '1';

Вы можете привести его к другому типу, например double(a).

1 голос
/ 21 декабря 2011

Ответ использует "bitget"

> x = bitget(7,1:3);

> class(bitget(7,1:3))  
  ans =  

  double

Результат удваивается.

1 голос
/ 21 декабря 2011

С strread: a = strread('123', '%c')

1 голос
/ 21 декабря 2011

Полагаю, наивно:

n = length(s);
myArray = zeros(1,n)
for i = 1:n
myArray(i) = double(s(i));

, где "double ()" - это любая команда для изменения строкового элемента на число с двойной точностью, если это действительно то, что вам нужно.

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