problem in converting a matrix of integers to vector of integers using str2num and num2str

1 次查看(过去 30 天)
Hello,
I have a matrix x of this form (these are example values)
1 0 0 1 0
0 1 0 0 0
0 0 0 0 1
1 0 0 1 1
I am trying to make a number out of each row so I used
y=strcat(num2str(x(:,1)),num2str(x(:,2)),num2str(x(:,3)),num2str(x(:,4)),num2str(x(:,5)));
which get me the result
'10011'
'01000'
'00001'
'10011'
Now I want to convert each string to a number but its not working.
A = str2num(y)
A =
[]
Also, I tried different method all faild beause the size of y is 4x5 and not 4x1.
why does matlab consider each char as column and how can I avoid this problem?
Thanks

采纳的回答

Ameer Hamza
Ameer Hamza 2020-11-11
编辑:Ameer Hamza 2020-11-11
Try this
x = [
1 0 0 1 0
0 1 0 0 0
0 0 0 0 1
1 0 0 1 1];
x = char(x+'0');
y = str2num(x)
Result
>> y
y =
10010
1000
1
10011
Or a faster solution
x = [
1 0 0 1 0
0 1 0 0 0
0 0 0 0 1
1 0 0 1 1];
y = x*10.^(size(x,2)-1:-1:0)';
  6 个评论
Ameer Hamza
Ameer Hamza 2020-11-11
编辑:Ameer Hamza 2020-11-11
If you want a different number of elements in each row, then string datatype is more appropriate. For example
x = [
1 0 0 1 0
0 1 0 0 0
0 0 0 0 1
1 0 0 1 1
5 0 0 90 5
5 0 0 95 0];
y = mat2cell(string(x), 6, ones(1,size(x,2)));
y = strcat(y{:});
output
>> y
y =
6×1 string array
"10010"
"01000"
"00001"
"10011"
"500905"
"500950"

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Data Type Conversion 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by