如何用matlab的textread函数读入txt文件中的一个函数?
电路里面的一个信号是cos(t)+cos(2t)+e^(-3*t)。我现在要实现从外部文件读入这个时间域的信号,应该怎么写啊?...
电路里面的一个信号是 cos(t)+cos(2t)+e^(-3*t)。我现在要实现从外部文件读入这个时间域的信号,应该怎么写啊?
展开
2个回答
展开全部
这个问题很有意思,要综合matlab的几个函数。
解决方案如下:
1.建立一个文本文件 function.txt 当然里面的内容就是 cos(t)+cos(2*t)+exp(-3*t) 这个函数了(要提醒的是,乘号一定要有 你的cos(2t)就没有 这个是不行的,还有对于e这样的值,在matlab的表示是exp,因此e^(-3*t),也需要改写成exp(-3*t))。
2.使用importdata('function.txt')就可以得到这个字符串形式的函数,不过这个函数是装在一个cell中,所以得取出来,代码如下:fc=importdata('function.txt');fc=fc{1};
3.取出来之后得到的是个字符串啊 !怎么计算呢? matlab中专门有一个针对字符串函数的求值函数,eval,用这个函数之前建议你先help 一下 。eval的调用有两种形式,一种是拼接,另一种就是直接对字符串所表示的函数进行代入求值,很显然这里我们需要用到第二种。代码如下:
t=1.2;%%测试值
y=eval(fc);
完整代码如下:
funcion.txt中 cos(t)+cos(2*t)+exp(-3*t)
fc=importdata('function.txt');
fc=fc{1};
t=1.2;
y=eval(fc);
解决方案如下:
1.建立一个文本文件 function.txt 当然里面的内容就是 cos(t)+cos(2*t)+exp(-3*t) 这个函数了(要提醒的是,乘号一定要有 你的cos(2t)就没有 这个是不行的,还有对于e这样的值,在matlab的表示是exp,因此e^(-3*t),也需要改写成exp(-3*t))。
2.使用importdata('function.txt')就可以得到这个字符串形式的函数,不过这个函数是装在一个cell中,所以得取出来,代码如下:fc=importdata('function.txt');fc=fc{1};
3.取出来之后得到的是个字符串啊 !怎么计算呢? matlab中专门有一个针对字符串函数的求值函数,eval,用这个函数之前建议你先help 一下 。eval的调用有两种形式,一种是拼接,另一种就是直接对字符串所表示的函数进行代入求值,很显然这里我们需要用到第二种。代码如下:
t=1.2;%%测试值
y=eval(fc);
完整代码如下:
funcion.txt中 cos(t)+cos(2*t)+exp(-3*t)
fc=importdata('function.txt');
fc=fc{1};
t=1.2;
y=eval(fc);
追问
现在的问题是 ,我需要输入的函数拉的普拉斯变换,
因为拉普拉斯在电路里面计算方便。而且 我希望得出的也是函数。
就像直接在代码里面直接写
syms t;
f=cos(t)+cos(2*t)+exp(-3*t);
X=laplace(X);
然后对X进行一系列的计算。这样可以么?
追答
可以的,
但是你的txt文件中的内容就必需格式化了,
statment.txt中的内容如下:
syms t;
f=cos(t)+cos(2*t)+exp(-3*t);
laplace(X);
在command窗口中的命令就应该如下:
st=importdata('statment.txt');
str1=st{1};
str2=st{2};
str3=st{3};
就获得了三个语句;
执行的时候使用eval
可以相继的执行
eval(str1);
eval(str2);
但是却不可以直接执行eval(str3);
因为你的X没有赋值,可以先赋值 然后再执行eval(str3);
值得注意的是,matlab中laplace函数只有符号解,就是不支持对实数求解laplace,因此X需要被设置成syms类型的。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询