Matlab 把符号变量变为数值
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Matlab 把符号变量变为数值相关的知识,希望对你有一定的参考价值。
现在我有一个符号变量x,在workspace中是一个正方体,在命令栏里打x,显示为3*5,而不是15,而把这个3*5复制粘贴再回车就是15,想得到一个办法能不能把符号变量直接赋给数b使b=15?请解决问题~闲人勿入~
参考技术A 用double函数将符号型变量变为数值型变量,要求符号变量的值是可以转换的,而你举的例子中x并未赋值,怎么可能转换?用vpa函数没问题,但结果应该仍然是x。 参考技术B b=eval(x)本回答被提问者采纳 参考技术C 你把源程序发一下,别人才好模拟的情况啊。
Matlab基本特性&矩阵与向量&数值函数与符号函数&Matlab绘图&Matlab编程&M函数文件
1. Matlab基本特性
我们经常接触到的matlab窗口一般只有三个:
命令窗口:用于输入命令和数据;
编辑窗口:用于建立和编辑M文件;
图形窗口:用于显示图形。
这里记录一些初始属性:
2. 矩阵与向量
3. 数值函数与符号函数
建立数值函数 inline 命令,在新版中已经不支持变量字符加引号,不过旧版的却可以,如旧版的
g
=
i
n
l
i
n
e
(
′
x
y
−
3
′
,
′
x
′
,
′
y
′
)
g=inline('x^y-3','x','y')
g=inline(′xy−3′,′x′,′y′);新版中用
f
=
i
n
l
i
n
e
(
′
x
y
−
3
′
,
x
,
y
)
f=inline('x^y-3',x,y)
f=inline(′xy−3′,x,y),下面记录下新版的使用方法,不过不久之后也会在新版本取消inline的使用。
但是,由于版本的更新,solve的更新从2019版开始,已经不支持字符向量输入,取而代之的是syms声明变量,,并且例如solve('2x==1’,‘x’)被solve(2x==1,x)替换。但此前面比较重要的是理解这种选择参数的方式,以及结果输出方式,都与symvar这个内置函数有关。所以先看symvar,然后再看solve函数。
4. Matlab 绘图
5. Matlab 编程
Matlab编程,和C语言等编程语言一样,可以将其命令行写入一个文件中,C语言后缀是.cpp,Matlab后缀是.m,在这其中,同样可以进行类似C语言的代码编写。
5.1 M文件的建立、打开与运行
- 建立新的 M 文件 左上角加号的新建,就有一个脚本(Ctrl+N),会发现其默认的文件名以.m为后缀
- 打开已有的 M 文件
方法1:从 MATLAB 命令窗口或编辑窗口的 file 菜单中左键点击open,在出现的对话框中选中需要打开的M文件,左键点击;
方法2:在 MATLAB 命令窗口中键入 [edit filename],则可打开指定的M文件。 注意:MATLAB默认只会在 bin目录下查找文件 /MATLAB/bin/filename。
- 运行M 文件
方式1:对正在编辑的 M 文件,可以点击工具栏上的 Debug 或 Run,即可运行当前程序;
方式2:或在命令行中输入 M 文件名(注意这个文件要在bin目录下),然后按Enter 键。
5.2 MATLAB 程序的基本结构
%*******Matlab 命令行文件*******
format compact
%一、输入方式
%1.程序中直接赋值
x=2; %输入单个值
a=[1,2,3;4,5,6;7,8,9];%输入矩阵(a为3阶方阵)
s='Any string!'; %输入字符串
%2.程序运行时赋值
x=input('x=');
y=input('Please input y=');%提示语句输入
%二、输出方式
%1.程序直接输出
x%变量后无分号;变量直接输出
disp([a])%a可以是标量、向量、矩阵
%2.格式控制输出
fprintf('x=%.3f y=%.0f\\n',x,y) %按指定格式输出
%三、有限次循环(for-end)结构
% for n=n1:step:n2(循环变量n=起始值:步长:结束值)
% commands-1
% end
% commands-2
%试计算1+3+5+...+2*100-1
clear;clc;%清理内存变量,并清流命令窗口
n=100;%赋值给定奇数的个数
s=0;%设定存放和的变量s并赋初值0
for i=1:n
s=s+(2*i-1);
fprintf('i=%.0f******s=%.0f\\n',i,s);%逐行显示出累加过程
end
%四、条件循环(while-end)结构
% while conditions
% commands-1;
% end
% commands-2;
clear;clc;
i=1;
s=0;
while i<=10
s=s+2*i-1;
fprintf('i=%.0f******s=%.0f\\n',i,s);%逐行显示出累加过程
i=i+1;
end
%五、单向选择判断(if-end)结构
% if condition
% commands-1;
% end
% commands-2;
% 计算分段函数的值
% 给定一组数,找到其中最大的数
a=input('please input a couple of number x(用中括号括起来):')%由键盘输入给定的一组数
n=length(a);
M=a(1);
for i=2:n
if a(i)>M
M=a(i);k=i;
end
end
M
%六、多想选择判断(if-elseif-else-end)
% if condition1
% commands-1;
% elseif condition2
% commands-2;
% else
% commands-3;
% end
% commands-4;
6 Matlab 函数文件与流程控制
%*********Matlab 函数文件*********
%一、函数文件的基本结构
% function [输出参数表]=函数名(输出参数表)
% 编写函数问价,求半径为r的球的体积和表面积
function [V,S]=fsphere(r)%r为球半径,V为求体积,S为球面积
V=(4*pi*r^3)/3;
S=4*pi*r^2;
% 保存文件为:fsphere.m,文件的名字要与函数名相同,其次文件的要放在bin目录下
%二、函数文件的调用
%[输出参数表]=函数名(输入参数表)
%调用的时候只要用两个参数:[v,s]=fsphere(4)
%三、Matlab 程序流程控制
% break;跳出循环过程
% return;对普通程序是提前结束运行,对于函数命令则是结束该函数程序,并返回到调用函数处
% pause:使程序运行暂停,等待用户按任意按键继续。pause语句在测试或查看中间结果时经常使用
% 直接使用:程序执行此语句时,暂停执行程序,等待用户从键盘按任意键继续执行
% 使用按时间暂停时间:pause(n)(其中n为暂停时间秒数),通常可用来慢放程序,可实现动画效果
% 动态显示数列极限 an=(1+1/n)^n -> e(n->inf)的毕竟过程
clear;clc;
hold on;
axis([0,150,2,2.8]);
grid;
for n=2:2:150
an=(1+1/n)^n;
plot(n,an,'r .','markersize',15);
pause(0.1);
fprintf('n=%d*******an=%.4f\\n',n,an);
end
会有一个动画的效果:
以上是关于Matlab 把符号变量变为数值的主要内容,如果未能解决你的问题,请参考以下文章