根据图像,我有一个5003×2的单元阵列。
为了能够绘制column1 vs column2,我需要删除column1中的所有结束逗号。
我试图将每个数据转换为字符串并找到逗号 使用'strfind'的位置:
A -> B = !A v B
但每次都会收到此错误:
未定义的运算符' - '表示'cell'类型的输入参数。
有没有有效的方法可以做到这一点?
答案 0 :(得分:2)
又一个单行:
s(:,1) = strrep(s(:,1), ',', '');
答案 1 :(得分:0)
您可以使用str2num
将第一列中的字符串转换为数字。例如:
% create an example cell array
s = {'4.28275e-006,', 126.923 ;
'4.28043e-006,' , 128.037 ;
'4.2781e-006,' , 129.009 ;
'4.27578e-006,' , 129.634 };
% extract the two columns
x = str2num([s{:,1}]);
y = [s{:,2}];
% plot
figure;
plot(x, y);
答案 2 :(得分:0)
要从字符串中删除字符,您只需使用字符' indices ...因此,如果您的逗号始终位于字符串的末尾,则可以使用
str = '4.1234e-006,' ;
str(1:length(str)-1)
>> ans = '4.1234e-006'
要在您的情况下使用它,使用简单的循环可能是最快的
for j = 1:5003
s{j, 1}( 1 : length(s{j, 1})-1 ) ;
end
在这种情况下,aksadv使用str2num
的答案可能更优雅,但值得注意的是字符串很容易像数组一样索引。