matlab計算結果顯示a 1,但判斷語句a 1,返回值是0,為什麼會這樣,又沒辦法令a 1的返回值是

2021-03-31 22:34:00 字數 5956 閱讀 3877

1樓:

問題在於程式會計算1-2/3,雖然精度很高,但和我們用分數進行的計算並不一樣,min時出現的1其實是四捨五入而來的,而2/3/2/3則不存在四捨五入,所以他的結果就是1,

要讓min情況下返回1,可以將2/3進行符號計算,這樣就不存在四捨五入了,比如

a=min(eval((1/3)/(1-sym(2/3))),(2/3)/(2/3))

matlab中if(a==1)是不是意思是隻要a不等於0就行。

2樓:匿名使用者

不是,而是a必須為1的時候,才會執行if內的語句!

具體解析:if內的語句是否會執行,取決於()內的判斷句是否為真,括號內為a==1,則只有在a=1的情況下,括號內的判斷句才為真,才會執行後面的語句!

3樓:丿奇

如果a=1的話,怎麼怎麼樣

是條件選擇語句。只有a=1時,後面的語句才會執行!

matlab:a=0.2:0.2:1.4,a(5)==1,為什麼結果ans是0(logical)而不是1

4樓:匿名使用者

a的資料型別是double,預設是用64位二進位制表示,因此在儲存的時候會有微小的誤差。通過下圖的驗證會版

發現a(5)與1確實存在權這樣的差距,因此a(5)==1的結果是0。

如果判斷條件是想表達某個變數等於某個數,建議寫為變數與該數的差值的絕對值小於一個很小的數,例如 if( abs(a(5)-1)<1e-6 )

怎麼讓matlab直接顯示計算的結果

5樓:匿名使用者

不要在語句後面加上分號就可以直接顯示結果

6樓:恩惠妮阿加西

當輸入命令後顯示的ans就是計算結果了.

關於ans:

一、什麼是ans

ans是matlab中預設的結果變數. 每次matlab進行運算後, 結果都要儲存在指定的變數中. 如果只是輸入表示式, 卻不指定把表示式的運算結果儲存在那個變數裡面, 那麼matlab就自 動地將結果儲存在ans變數中.

直到下一次不帶指定儲存變數的運算結束前, ans中所儲存的值不變. 因此, 可以在下一次運算中用ans呼叫上一次運算的結果.

二、ans的值

當m檔案中出現非賦值性的計算時,matlab會把結果自動存入ans,例如1+2^2,執行結果就是ans=5。如果m檔案中每一個計算都是賦值的,即所計算的結果都是儲存在自己設定的變數中的,那麼ans一直沒有得到使用,就會一直是1。

三、經常遇到的出現ans的情況

1、如果對某個變數進行賦值計算,沒有在後面加分號結束該計算,運算結果會自動以ans顯示該值,如 y = 9或y = 9 x = 10;

運算結果中會自動出現ans = 9,即使並沒有要求將其輸出,如果是迭代運算,則ans會反覆出現。

2、如果檔名由純數字組成,則計算結果自動為ans = 檔名

3、另外一種是執行的時候總有ans=1出現,可能是把elseif寫成了else,所以出來ans=1,加上以後就沒有ans=1了。

如果是elseif後面還會跟一個判斷,而一般else是沒有的。如果將elseif錯寫為else,後面會跟一個判斷的。

7樓:浙師山東人

把你的源程式發一下,我看看

matlab裡a(i)~=0什麼意思

8樓:小丁創業

「matlab裡a(i)~=0」的解釋如下:

確定陣列a的第i個元素是否不等於0。如果不等於0,則結果為true,否則為false。

分析:a(i)表示陣列a中的第i個元素,在matlab中,「~」表示非,「~=」表示不等於(≠)。

例如:1、開啟matlab並在命令視窗中輸入示例陣列

>> a = -1:3

2、確定a的第一個元素是否不等於0:>> a(1)~= 0

因為a的第一個元素等於-1並且滿足不等於0的條件,所以結果為true,並且顯示結果為1

3、確定a的第二個元素是否不等於0:>> a(2)~= 0

因為a的第二個元素等於0並且不滿足不等於0的條件,所以結果為false且顯示結果為0

9樓:匿名使用者

matlab中 a(i)~=0 表示:

判斷陣列a的第i個元素是否不等於0,如果不等於0,結果就為真(true),否則就為假(false)。

解析:a(i)表示陣列a中的第i個元素,matlab中~表示非,~=表示不等於(≠)。

示例如下:

1、開啟matlab,在命令視窗輸入示例陣列

>> a = -1:3

2、判斷a的第1個元素是否不等於0: >> a(1)~=0

因為a的第1個元素等於-1,滿足不等於0的條件,所以結果為真,顯示結果為1

3、判斷a的第2個元素是否不等於0: >> a(2)~=0

因為a的第2個元素等於0,不滿足不等於0的條件,所以結果為假,顯示結果為0

10樓:匿名使用者

i)~=0

陣列a的第i個元素不等於0 這是邏輯判斷

如果a(i)=0

(a(i)~=0)的值為假即0

如果a(i)為0以外的數

(a(i)~=0)的值為真即1

春雨絲絲潤萬物 紅梅點點繡千山 春意盎然

matlab中a(:,1)'是什麼意思

11樓:匿名使用者

matlab中a(:,1)'表示將二維矩陣a的第一列轉置為行向量。詳細說明如下:

a(x,y)表示二維矩陣第x行第y列位置的元素,x為:則表示所有的行。因此,a(:,1)就表示a的第1列的所有元素,這是一個列向量。

矩陣a右上角加一短撇(')即a'表示a的轉置矩陣——交換a的行列位置(當a為複數矩陣,是共軛轉置),因此a(:,1)'表示將矩陣a的第一列轉置,最終就得到了一個行向量。

下圖是以上文字說明的matlab**演示結果:

12樓:匿名使用者

如圖為例項,即是指矩陣a第一列的轉置矩陣。其中符號:表示列所有元素,1表示第一列,『表示轉置。

如果a(:,2)'則為第二列,a([1 2],1)'則為第一列第一二行的轉置。希望可以幫到你。

13樓:淚之夢幻

f(:,1)就是取f 矩陣的第1列。

f=[1,2,3; 3,4,6; 7,8,9]

f(:,1)

matlab中冒號的用法總結:

1)a:b 表示[a,a+1,……,b]

>> a=1:5

a =1 2 3 4

2)當然如果b-a不是整數的話,則向量的最後一位數是n+a,且n=fix(b-a)

>> a=1.2:4.9

a =1.2000 2.2000 3.2000 4.2000

3)上面的前提是ab則會出現空值

>> a=5:1

a =empty matrix: 1-by-0

此時 a是空矩陣,看workspace也可以看到a

4)a:c:b表示[a,a+c,……,a+n*c],其中n=fix((b-a)/c)

>> a=1:3:11

a =1 4 7 10

5)a:c:b在以下情況為空值

c>0,且ab

>> a=11:3:1

a =empty matrix: 1-by-0

6)a(:)表示以一列的方式顯示a中所有元素

>> a=[1 2 3;4 5 6]

a =1 2 3

4 5 6

>> a(:)

ans =14

253 6

7)b=a(i, :)表示把矩陣a的第i行存入b

>> b=a(1,:)

b =1 2 3

8)b=a( :,j)表示把矩陣a的第j列存入b

>> b=a(:,1)

b =1

49)b=a(j :k)表示把矩陣a中[a(j),a(j+1),...,a(k)]這些元素存入b中

>> b=a(3:5)

b =2 5 3

10)b=a(:,c:d)表示把矩陣a的第c到第d列存入b中,當然c,d大於a的列數則出錯(b=a(c:d,:)表示取行)

>> a=[1 2 3;4 5 6;7 8 9]

a =1 2 3

4 5 6

7 8 9

>> b=a(:,2:3)

b =2 3

5 6

8 9

14樓:hero會計

(1, :)表示:矩陣的第一行。

(2, :)表示:矩陣的第二行。

依次類推:

(x, :)表示:矩陣的第x行。

而(:,y)表示:矩陣的第y列。

15樓:天雲一號

在matlab中,a(:, 1:3)=表示將陣列a的第1到第3列刪除。

第一個冒號( : )表示取陣列a的所有行;

1:3表示取陣列a的第1到第3列。

具體的含義可以參考如下例項:

a=[1, 2, 3, 4, 5;

2, 3, 4, 5, 6;

3, 4, 5, 6, 7]; % 陣列a的大小為3*5a(:, 1:3)=; % 執行完該語句後,陣列a為:

a=[4, 5;

5, 6;

6, 7]; % 此時陣列a的大小為3*2

16樓:巨匯指導

在matlab中,a(a==inf)=0表示將陣列a中所有等於inf的元素都賦值為0。 a==inf表示取出陣列a中等於無窮大(inf)的元素的位置。 舉例說明如下:

a = [1, 2, inf, 4, 3; 2, inf, 2, inf, inf; inf, 2, 0, 3, inf]; a(a==inf)=0; % 執行完該語句後

17樓:匿名使用者

x(:,1)=a*y(:,1) %%% 矩陣a乘以y的第一列,所得的值賦給x的第一列

例如:>> a= [1 2;3 4];

>> y = [2 1;1 3];

>> x = zeros(2,2);

>> x(:,1) = a*y(:,1)

x =4 0

10 0

18樓:匿名使用者

代表把a矩陣的第一列進行轉置

1代表矩陣的第一列,冒號為省略行號

19樓:pl帶我離開

p1表示取m資料矩陣中的1至5列,t1表示取6、7列。。

括號中逗號前面表示所取的行,後面表示所取的列。

:表示取所有的,這裡即表示取1至5列的所有的行和6、7列的所有的行。

如果「:」在逗號後面即表示取所有的列。

20樓:不友邦

1、是指陣列中的1至5列

2、第一個冒號,指的是該陣列中的全部行數

3、第二個冒號,前後連線1和5,指的是1-5列

21樓:匿名使用者

a是一個三維陣列。個人理解a(:,:,1)是指取這個三維陣列的第一個元素(專業點稱為『頁』),這個元素是一個二維矩陣。

為了更好地理解高維陣列,我們假設a的每個元素都為3*4的矩陣,那麼你可以用a(1,2,:)取得每個(二維陣列)中的第1行第2列的數值。同理,a(2,:

,1)這個應該知道是什麼意思了吧,呵呵,說對了,就是取a的第一個元素(3*4的二維矩陣)裡的整個第二行。依此類推。。。。

高維陣列的形象思維比較困難,不好理解,用的時候儘量避免,不過一般用到三維四維也夠用了吧。

你可以在matlab裡面建立一個高維陣列,自己輸入諸如此類的命令,理解會更深刻!希望有所幫助!

matlab的計算結果為什麼是個複數呢

結果是複數的原因 1.2905e 7 0.7143 1.2905e 7 7143 10000 1.2905e 7 1 2 7143 5000 其中,1.2905e 7 1 2 是負數的平方根,因此結果為複數 為了避免複數,我們可以把負號提出來 1.2905e 7 0.7143 ans 1.2001e...

怎麼用計算器計算結果是

設一個數為baix,x可以是你輸入du的任意zhi一個數,x 52.8 5 3.9343 0.5 10x 520.1314 x為任意數dao。例子 若x 8,8 52.8 60.8 60.8 5 3.9343 300.0657300.0657 0.5 80 520.1314。望採內納!再介紹一些數字...

算式7 7 77 772019個7計算結果的末兩位數字是多少

7除以100的餘 數為7,7 7除以100的餘數為49,7 7 7除以100的餘數為43,7 7 7 7除以100的餘數等於43 7除以100的餘數為1 而7 7 7 7 7除以100的餘數等於7,則7 7 7 7 7 除以100所得的餘數,4個數一迴圈,依次為7,49,43,1,因為2008 4 ...