在编写Huffman信道编码时遇到的问题,字符型数组中有空格元素,删除空格元素并转换为数字数组。
关键是这两句,-16是空格键的ascii码减去‘0‘的ascii码的值,也就是转换完以后空格字符的值。
W=double(W)-double('0')
W(find(W==-16))=[];
话不多说,直接看效果
原数组
' 1 000 01 0011 0010'
转换后效果
1 0 0 0 0 1 0 0 1 1 0 0 1 0
MATLAB删除字符数组中空格元素在编写Huffman信道编码时遇到的问题,字符型数组中有空格元素,删除空格元素并转换为数字数组。关键是这两句,-16是空格键的ascii码减去‘0‘的ascii码的值,也就是转换完以后空格字符的值。W=double(W)-double('0')W(find(W==-16))=[];话不多说,直接看效果原数组w = ' 1 000 01 0011 0010'``转换后效果w = 1 0 0 0
现有一个1*20196的cell数组a,想删除其中的空元素(其实我也不知道那个究竟是不是空元素,它显示的是“ [] ”),求问该怎么写。
我写的代码如下:
for i=1:length(a)
k=isequal(a(i),{[]});
if(k==1)
a(i)=[];
解决方案:
可以使用 cellstr 函数将一个普通的字符串数组转换为一个 cell 数组,每个 cell 中包含一个字符串。例如:
strs = ["hello", "world", "foo", "bar"];
cells = cellstr(strs);
现在 cells 中包含了四个 cell,分别包含 "hello"、"world"、"foo" 和 "bar" 这四个字符串。