24小时热门版块排行榜    

CyRhmU.jpeg
查看: 1377  |  回复: 4

华丽的飘过

版主 (著名写手)

[求助] 求助关于Matlab中字符串的转化问题

各位大哥大姐

老师给了小弟一个事儿做,需要用Matlab编程序,但是小弟一开始就遇到了麻烦,这个工作需要把字符串转化为可计算的数值,比如以下三组字符串数据(设为“B”)

'12-04-2010 09:23:30  31 9.982 v'
'12-04-2010 09:23:30  32 2.003 v'
'12-04-2010 09:23:30  33 -10.098 i'

我想从其中提出来两组矩阵,一组是
9.982
2.003
-10.098
另一组是函数(注意,这里不再是字符串了,需要把v和i转化为函数)
v
v
i

不知道我该用什么命令呢?

请各位大侠不吝赐教
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

华丽的飘过

版主 (著名写手)

各位大侠帮帮忙吧
2楼2012-06-19 09:47:16
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

csgt0

荣誉版主 (著名写手)

彩色挂图

【答案】应助回帖

★ ★ ★
感谢参与,应助指数 +1
华丽的飘过: 金币+2, 我已经找到方法了,不过还是谢谢您 2012-06-19 15:27:35
臭水沟: 金币+1, 谢谢交流~~ 2012-06-21 19:45:25
建议你用EXCEl分列直接取出来最方便。非要编程的话,如果数据格式统一,比如寻找每个字符串中倒数第2个空格和最后一个空格之间的内容,得到'9.982','2.003','-10.098',然后用str2double将其转换为数字。
对于将v,i用函数替换查找出来后直接换就可以了。
showmethemoney
3楼2012-06-19 14:10:30
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

csgt0

荣誉版主 (著名写手)

彩色挂图

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★
华丽的飘过: 金币+8, 我已经找到方法了,不过还是谢谢您 2012-06-19 15:27:48
臭水沟: 金币+2, 谢谢交流~~ 2012-06-21 19:45:31
B={'12-04-2010 09:23:30  31 9.982 v'
'12-04-2010 09:23:30  32 2.003 v'
'12-04-2010 09:23:30  33 -10.098 i'};
for i=1:length(B)
a=B{i};
t=find(a==' ');
data1=a(t(end-1):t(end));
data(i)=str2double(data1);
if (a(end))=='v'
    data2(i)=sin(data(i));
elseif (a(end))=='i'
    data2(i)=cos(data(i));
end
end
data'
data2'

ans =

    9.9820
    2.0030
  -10.0980


ans =

   -0.5288
    0.9080
   -0.7818


不知道你说的函数是什么意思,给了个例子,v的时候算sin,i的时候算cos
showmethemoney
4楼2012-06-19 14:21:38
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

华丽的飘过

版主 (著名写手)

求助完毕,请版主关闭此帖
5楼2012-06-19 15:28:47
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 华丽的飘过 的主题更新
信息提示
请填处理意见