r****y 发帖数: 1437 | 1
suppose string
str = 'y =3*x^2+5*x^7'
idx = findstr(str, '*');
ind = findstr(str, '^');
coefficient = str2num(str(idx-1));
power = str2num(str(ind+1));
If your coefficient and power can be real number, needs more
positioning statement.
|
|
j**u 发帖数: 6059 | 2 ☆─────────────────────────────────────☆
jzxu (自然) 于 (Fri Feb 2 09:37:47 2007) 提到:
发信人: recluse (skystar), 信区: EE
标 题: 请教一段matlab程序
发信站: BBS 未名空间站 (Thu Feb 1 23:49:42 2007), 转信
任务是把一个size大小的.txt 文件里的数据交替地赋值给两个数组x[i]和y[i]
比如.txt里 1 2 3 4 5 6...那么x[1]=1,y[1]=2,x[2]=3,y[2]=4,x[3]=5,y[3]=6...
给了一个示例程序
file='c:\xxx\xxx\xxx.txt';
size=xxx;
function [x,y]=lv2m(file,size)
fid=fopen(file);
for i=1:size
x(i)=0;
y(i)=0;
end;
for i=1:size
s=fgetl(fid);
x(i)=str2num(s(1:12));
y(i)=str2num(s(13:size(s, |
|
t****b 发帖数: 2484 | 3 这类题还挺多的 落雨滴 最大矩阵 3D落雨滴 天际线 还有几个单调栈 熟了之后就很
好了 而且数据结构以复杂 egde case就少很多 如果有思路其实更容易
比什么strstr str2num清爽多了 |
|
l********k 发帖数: 14844 | 4 matlab一行,已测试...
find(str2num(fliplr(num2str((1:1111)'*9, '%04d'))) == (1:1111)') |
|
z***i 发帖数: 8285 | 5 牛。能把matlab写成这样
matlab一行,已测试...
find(str2num(fliplr(num2str((1:1111)'*9, '%04d'))) == (1:1111)') |
|
|
l********r 发帖数: 14 | 7 我现在觉得作为字符串取出来的确不难。问题在于:
matlab的symbol expression总是把小数写成分数形式,分母分子经常会有几百个数字,
这样
转化成数字(str2num)时超出处理范围了。难道symbol不能是小数形式吗?这样我至少还
可以指定精度什么的。 |
|
l********r 发帖数: 14 | 8 我现在觉得作为字符串取出来的确不难。问题在于:
matlab的symbol expression总是把小数写成分数形式,分母分子经常会有几百个数字,
这样
转化成数字(str2num)时超出处理范围了。难道symbol不能是小数形式吗?这样我至少还
可以指定精度什么的。
btw,你的算法有个小flaw:
如果某个系数为1,表达式不显示出来,所以需要多些判断语句。 |
|
m*******y 发帖数: 314 | 9 %% assume test.csv file has 12345 345435 23 12312 34324
_
%% note the last one is a char '-'
A = importdata('test.csv');
B = str2mat(A);
C = B(1: length(B)-1);
%% please first try to see the final char is one or two (or X) in the string
B, and adjust length(B)-X
D = str2num(C);
Can you try above codes to see if this works or not? |
|
m*******y 发帖数: 314 | 10 %% assume test.csv file has 12345 345435 23 12312 34324
_
%% note the last one is a char '-'
A = importdata('test.csv');
B = str2mat(A);
C = B(1: length(B)-1);
%% please first try to see the final char is one or two (or X) in the string
B, and adjust length(B)-X
D = str2num(C);
Can you try above codes to see if this works or not? |
|