如今的matlab十分方便,导入数据可以直接在excel中复制数据,然后到matlab的工作空间处粘贴。
如果是想处理字符串,导入后是元胞cell类型。
- 去除元胞a中空元素用:
a(cellfun(@isempty,a))=[]
-
去除重复用函数
unique()
- 要去重且不想重新排序用
a = unique(a,'stable')
- 要去重且不想重新排序用
-
取元胞内容时注意,小括号()表示取出指定位置的元胞,还是个元胞,不能用于比较,否则很难找到错误。用大括号 { } 取出的是元胞指定位置的内容,可以拿来做比较,或者借助 isempty 判断是否为空。eg:
if(~isempty(tagcity{i,j}))
- 假设a元胞的第二个元素为[]既空元素,那么
isempty(a(2))
返回0,是一个错误的结果,只有写isempty(a{2})
才会返回1,得到正确的判断。
- 假设a元胞的第二个元素为[]既空元素,那么
-
strcat()函数里面拼接字符串,试验出用小括号、花括号都行。
下面是一段组合单词的函数实例,可保存后直接拿来调用。
function [out] = queryComb(wordA,wordB,wordC)
out = {};
for i = 1:size(wordA,1)
for j = 1:size(wordB,1)
for k = 1:size(wordC,1)
comb = strcat(wordA(i),wordB(j),wordC(k));
out = [out;comb];
end
end
end
end
字符串
- matlab中字符串使用单引号''括起来的。
- double函数或abs函数可以获取字符的ASCII值。
- char(63)输出ASCII码为63代表的字符。
- 字符串与数值间互换str2num, num2str
- eval('t=1')执行字符串中的语句,也就是t=1语句。
eval()函数一个很好的功能就是可以自动生成一系列变量
注意eval()中拼接字符串外面要加中括号!
for x = 1:3
eval(['a',num2str(x),' = 7'])
end
%% 相当于执行了下面三条语句
a1 = 7
a2 = 7
a3 = 7
- 想要让标题也自动编号,要注意在字符串内还想输出单引号'的话,需要打两个''
for y = 1:2
eval(['title(''test',num2str(y),''');']);
end
网友评论