matlab中如何將x1 x2替換成想x 1 和x

時間 2021-09-21 09:59:42

1樓:匿名使用者

% 字串替換

f2 = '((l(i)-zh)^3/(6*x1*x2)-y(i))*cos((l(i)-zh)^2/(2*x1*x2))^2'

f2 = strrep(f2,'x1','x(1)');

f2 = strrep(f2,'x2','x(2)')% 符號替換

l = [1 2]; i = 1;

y = [3 4];

syms zh x1 x2

f2 = ((l(i)-zh)^3/(6*x1*x2)-y(i))*cos((l(i)-zh)^2/(2*x1*x2))^2

f2 = subs(f2,,)

% 函式控制代碼替換

l = [1 2]; i = 1;

y = [3 4];

f2 = @(x1,x2) ((l(i)-zh)^3/(6*x1*x2)-y(i))*cos((l(i)-zh)^2/(2*x1*x2))^2

s = func2str(f2);

s = strrep(s,'x1','x(1)');

s = strrep(s,'x2','x(2)');

f2 = str2func(s)

2樓:baisiqi白

你得有矩陣x【x1,x2】

其中x1 x2 為列向量

x1=x(:,1) x2=x(:,2)否則你都沒有x,哪來的x(1),x(2)

3樓:匿名使用者

>> f2=sym('((l(i)-zh)^3/(6*x1*x2)-y(i))*cos((l(i)-zh)^2/(2*x1*x2))^2')

x1=sym('x(1)');

x2=sym('x(2)');

f2=subs(f2)

f2 =

-cos((zh - l(i))^2/(2*x1*x2))^2*(y(i) + (zh - l(i))^3/(6*x1*x2))

f2 =

-cos((zh - l(i))^2/(2*x(1)*x(2)))^2*(y(i) + (zh - l(i))^3/(6*x(1)*x(2)))

在matlab中x1=x(:,1);x2=x(:,2);是什麼意思

4樓:wayde神獸金剛

根據語境,這行**的意思是,從x這個矩陣中取出第一列賦給x1,再從x矩陣中取出第二列賦給x2。執行後x1和x2是兩個列向量,分別是x這個矩陣第一列和第二列。

解析:這是兩條語句寫在了一行上。以逗號分隔。第一句x1=x(:,1)和第二句x2=x(:,2)的語法結構是一樣的。這裡只以第一句為例。

1. 首先是開頭的x1=,這裡的=號在matlab裡面代表賦值。賦值就是把等號右邊的值複製給左邊的變數。因此x1將會得到等號右邊的東西。

2. 等號右邊是x(:,1)。

這個x在之前就已經定義過,否則單獨一句的**無法執行。按照這裡的語境,x是一個二維陣列,即矩陣。為方便講解x我自定義了一個4行4列的矩陣,以它為例子。

3. x後面的小括號是一種陣列的索引方法。陣列的索引就是取出陣列中的某一部分的操作。

假如要索引一個二維陣列,括號裡就要有兩個引數(行號和列號)。引數之間用逗號分隔。比如x(3,4)表示取出矩陣x第三行第四列的那個數。

在例子中是12。

4. 如果要索引陣列的一片區域,可在行或列引數裡用開始的行號:結束的行號這種格式表示要取連續的行或列。

如x(1:3,3:4) 就表示取出第1行到第3行並且還是第3列到第四列相交的一片區域,這樣取出的是一個小矩陣。

5.重點:如果只要取出一列,就不用限定行。

因此在行的引數一欄開始和結束行號都不寫,只留下一個冒號,來表示所有行都要保留。於是就有了這種寫法x(:,4)。

表示取出第四列。得到的是一個列向量。類似的,x(4,:

)則表示第四行。

6. x1=x(:,1);x2=x(:

,2); 連起來效果就是可以得到兩個列向量。加了分號的命令可以寫在一行而且沒有任何輸出。你可以只輸入x1回車檢視x1的值,也可以到工作空間視窗雙擊檢視變數。

最終執行結果如下:

mathworks是開發matlab的公司,mathworks中國上的matlab文件具有權威性。遇到不會的問題可以查閱官方文件。

5樓:導超

首先,x是一個矩陣,可以是方陣,也可以不是;

y=x(:,i)的作用就就是把矩陣x的第i列取出來賦值到y裡面,那麼得到的y就是一個列向量。

給你舉個例子;

a =2 3 4 53 4 5 6

4 5 6 7

5 6 7 8

>> x1=a(:,1)

x1 =23

45>> x2=a(:,2)

x2 =3456

matlab中怎樣對多元函式如x(1)x(2)求偏導 10

6樓:匿名使用者

syms x1 x2

f=x1.^2+x2.^2;

diff(f,x1)

幹嘛寫成陣列形式? 又不是特別大量

唉,真是會給自己找麻煩

我嘗試過了, 不可以對x(i)形式取導

可以妥協一下該成下面的形式

x=sym('[x1, x2]');

f=x(1).^2+x(2).^2;

diff(f,x(1))

matlab 中,如何對符號函式 f(x1,x2,x3) 中的符號變數賦值,其中 x1=0:0.01:0.2;x2=0:0.01:0.4;x3=1-x1-x2;

7樓:匿名使用者

用subs,先代bai換一個量,du再用for迴圈代換另一個量,zhi可以解決在

dao符號函式裡沒有版

點乘點除點冪的問題:權

syms x1 x2 x3;

x3 = f(x1,x2);

x1 = [0:0.01:0.2];

x2 = [0:0.01:0.4];

[xx,yy] = meshgrid(x,y);

z = subs(x3,x1); %先把x3表示式中的x1換為[0:0.01:0.2]向量

zz = ;

for i = 1:length(x2)

zz = [zz;subs(z,x2(i))]; %再依次把x2的每一個數代進去

end %迴圈完zz是一個矩陣,列數為x1的長度,行數為x2的長度mesh(xx,yy,zz); %畫3維圖形

8樓:匿名使用者

x1=0:0.01:0.2;

x2=0:0.01:0.4;

x=-200:0.3:200;

y=-200:0.1:200;

[x1,x2]=meshgrid(x1,x2);

x3=1-x1-x2;

mesh(x1,x2,x3)

x1=x(1:2:end)在matlab中什麼意思

9樓:匿名使用者

表示x1是從矩陣x的第1個數開始取起,間隔為2,一直取到最後一個數。

例如x=[1 2 3 4 5 6]

那麼x1=[1 3 5]

x 1 x 2的不定積分,1 x 1 x 2的不定積分

分開嘛左邊是lnx,右邊令x sint,則 1 x 2dt cost 2dt cos2t 1 2dt 所以1 x 1 x 2的不定積分是lnx sin2t 2 x 2 c c為常數 令a 1即可,原式 1 2 arcsinx 1 2 ln x 1 x c 左邊是lnx,右邊令x sint,則 1 x...

3x 3 a 2x滿足對於任意的x1,x2屬於都有f x1 f x21恆成立,求a的取值範圍

f x1 f x2 1 3 x1 x2 x1 2 x1 x2 x2 2 a 2 x1 x2 1 3 x1 x2 x1 2 x1 x2 x2 2 3a 2 f x1 f x2 1 則 1 3 x1 x2 x1 2 x1 x2 x2 2 3a 2 1 x1 x2 x1 2 x1 x2 x2 2 3a 2...

已知X1,X2是方程X的平方加3X加1的兩實數根,求X1的三次方加8X2加20的值

你好,yh3110088 解 x1,x2分別是方程x 3x 1 0的兩個實數根 x1 3x1 1,由韋達定理,可知 x1 x2 3 x1 8x2 20 3x1 1 x1 8x2 20 3x1 x1 8x2 20 3 3x1 1 x1 8x2 20 9x1 3 x1 8x2 20 8x1 8x2 23...