投資資訊集合站

matlab syms轉數值、MATLAB subs、Matlab syms 轉 數值在PTT/mobile01評價與討論,在ptt社群跟網路上大家這樣說

matlab syms轉數值在Re: [問題] 解完聯立無法直接得到值- 看板MATLAB

作者Re: [問題] 解完聯立無法直接得到值
標題ejialan (eji)
時間2018-07-10 10:14:09 UTC


: 遇到的問題是
: 透過兩條由連接兩個點的線來找交點
: 都是簡單的二元一次線性方程式
: 但是方程式的斜率和常數會需要一直改變
: 所以先用下面的方法測試
: 但是得出的交點卻顯示代數而不是直接顯示數值
: 想要看數值必須把那串代數答案重新輸入才看的到
: 有沒有辦法在跑的過程中直接得到數值答案?
: 變成:
: x=4
: y=4
: 這樣。
: 感謝。
: 程式碼:
: %Line_1
: x1=0;
: y1=0;
: x2=8;
: y2=8;
: a = polyfit([x1,x2],[y1,y2],1);
: %Line_2
: x3=0;
: y3=8;
: x4=8;
: y4=0;
: b = polyfit([x3,x4],[y3,y4],1);
: value_ax = a(1,1); %Line1斜率
: value_ay = a(1,2); %Line1常數
: value_bx = b(1,1); %Line2斜率
: value_by = b(1,2); %Line2常數
: syms x y
: [x,y] = solve('y = value_ax * x + value_ay','y = value_bx * x + value_by')
: 結果:
: x =
: -(value_ay - value_by)/(value_ax - value_bx)
: y =
: (value_ax*value_by - value_ay*value_bx)/(value_ax - value_bx)

法1:

問題在於你的寫法不會幫你把值代入字串
你可以把你solve裡的字串貼到Command Window執行
會發現你value_ax等變數還是保留成字串
要代入的話要使用num2str把數值轉成字串如下

[x,y] = solve(['y=' num2str(a(1,1)),'*x+',num2str(a(1,2))],['y=',...
num2str(b(1,1)),'*x +', num2str(b(1,2))])

法2:

solve也可以吃符號變數
所以可以把要解的方程式令成eq1=0,eq2=0的形式

syms x y
eq1=a(1,1)*x+a(1,2)-y;
eq2=b(1,1)*x+b(1,2)-y;
[x,y]=solve(eq1,eq2)

法3:

既然是線性方程可以整理成矩陣Ax=b的形式
然後x=A\b

A=[a(1,1) -1
b(1,1) -1];
bb=-[a(1,2);b(1,2)];
xy=A\bb

法4:

其實你解出來的結果就是沒代值的代數解
用subs或eval就可以把值代入了
所以最後加個

x=subs(x)
y=subs(y)

x=eval(x)
y=eval(y)

注意每個方法解完的變數型態略有不同
solve、subs出來會是符號變數
左除(\)、eval會是浮點數

--

推 ccam: 大感謝!!! 07/10 13:40

matlab syms轉數值關鍵字相關的推薦文章

matlab syms轉數值在怎样将符号型矩阵转换成数值型matlab - 百度知道的討論與評價

符号型矩阵转数值型矩阵可以使用double命令如: >> a=[1/3 sqrt(2); 2/3 sqrt(5)] a = 0.3333 1.4142 0.6667 2.2361 >> b=sym(a) % a是数值型矩阵,先 ...

matlab syms轉數值在syms数据类型如何转换为数值型? - MATLAB中文论坛的討論與評價

MATLAB 中文论坛MATLAB 基础讨论板块发表的帖子:syms数据类型如何转换为数值型?。我程序中有如下一段:syms x;fun=一个一元二次方程x为变量 ...

matlab syms轉數值在Matlab中的符號計算- IT閱讀的討論與評價

而且數值方法也無法處理含有符號引數的情形。 這是一個求解普通一元二次方程的例子:. syms x. [solutions_x] = solve(x^2-3*x ...

matlab syms轉數值在ptt上的文章推薦目錄

    matlab syms轉數值在matlab syms轉數值 - 軟體兄弟的討論與評價

    matlab syms轉數值,其中sym 指令可將字串'(1+sqrt(5))/2' 轉成MATLAB 內建的符號 ... 列的sym 数据类型;用哪个函数能把y转化为数值型的,具体格式是什么. ,MATLAB中文 ...

    matlab syms轉數值在matlab中syms类型的转换_weixin_30362233的博客的討論與評價

    类型是sym的数字转化为char型x = sym('2*sqrt(5) + pi') % sym型的数字s = num2str(double(x)) % 将sym型的数字转化为char型matlab中的sym数据类型 ...

    matlab syms轉數值在matlab中怎樣將型別是sym的數字轉化為char型 - 好問答網的討論與評價

    matlab 中怎樣將型別是sym的數字轉化為char型,1樓匿名使用者x sym 2 sqrt 5 pi sym型的數字s num2str double x 將sym型的數字轉化為char型.

    matlab syms轉數值在matlab符號運算帶入數值,大家好matlab中符號 ... - 迪克知識網的討論與評價

    符號變數是利用指令sym 和syms 來建立. 它們的使用格式為: s = sym( ′ a ′ ) 定義單個符號變數s. syms a b c 定義多 ...

    matlab syms轉數值在如何将sym类型的变量转换成数值型 - 踢王网的討論與評價

    我用vpasolve解方程组,得到的结果是sym类型的,工作空间里总显示 ... Matlab符号运算转与数值运算转化sym2num; 将字符数组或字符串转换为数值数组 ...

    matlab syms轉數值在matlab sym转数值 - 搜狗搜索 - 知识的討論與評價

    87%的人还搜了 · 如何导出sym中数值 matlab sym转换为double · matlab把符号转化为数值 matlab sym函数 · matlab sym转化为数字 matlab的sym数据转换 · matlab 符号解转成数值 ...

    matlab syms轉數值的PTT 評價、討論一次看



    更多推薦結果