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 ...