Re: [問題] fprintf

看板MATLAB作者 (*~小宇仔~*)時間17年前 (2007/08/08 14:11), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
謝謝z大和g大~~剛有人點醒我~複數比大小怪 所以其實順序調一下就ok了 不要先比 先管複數即可 A=[-1,1,0,2+i]; for i=1:length(A) if isreal(A(i))==0 fprintf('A(%d)=%s.是複數\n',i,num2str(A(i))); else if A(i)>0 fprintf('A(%d)=%d.是正數\n',i,A(i)); else if A(i)<0 fprintf('A(%d)=%d.是負數\n',i,A(i)); else if A(i)==0 fprintf('A(%d)=%d.是零\n',i,A(i)); end end end end end ※ 引述《Gwaewluin (神無月 孝臣)》之銘言: : ※ 引述《KARO7696 (*~小宇仔~*)》之銘言: : : 疑還是不行耶~~我的程式如下 : : A=[-1,1,0,2+i]; : : for i=1:length(A) : : if A(i)>0 : : fprintf('A(%d)=%d.是正數\n',i,A(i)); : : else if A(i)<0 : : fprintf('A(%d)=%d.是負數\n',i,A(i)); : : else if A(i)==0 : : fprintf('A(%d)=%d.是零\n',i,A(i)); : : else : : a=real(A(i)); : : b=imag(A(i)); : : fprintf('A(%d)=%2.0f+%+2.0di,是虛數\n',i,a,b); : : end : : end : : end : : end : 複數不能比大小啦 : 不是程式的問題 : 是比大小那邊錯了 : 用sign就可以判斷整數正負號以及是否為複數了 : 還有你使用到複數的話 : 變數名稱不要用到i或j : for ii = 1 : length( A ) : switch sign( A( ii ) ) : case 0 : fprintf('A(%d)=%2d 是零\n' , ii , A( ii ) ) : case 1 : fprintf('A(%d)=%2d 是正數\n' , ii , A( ii ) ) : case -1 : fprintf('A(%d)=%2d 是負數\n' , ii , A( ii ) ) : otherwise : fprintf('A(%d)=%2d%+2di 是複數\n' , ii , real(A(ii)) , imag(A(ii)) ) : end : end : 另外如果你覺得輸出看到1i感覺很情怪的話 : 可以用個小小的判斷式判斷imag(A(ii))是否等於1 : 是的話只要輸出real(A(ii))即可,+i或-i自己打 -- ╔══════我的無名~^^~http://www.wretch.cc/user/KARO7696══╮ ██◢◣ ◢███ ◢██ ███ ███ ███ ███◤ ██▋█ ██▋█ ██▋█ ▂▂ ▆▆ █▋█ ▆▆ ███◣ ████ ██◣█ ██▋█ █▋█ ███ █▋█ ██◥█ ██▋█ ██◥ ███ ███ ██ ╰═══════════════════ψFirstdrop ═════ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.138.136.232
文章代碼(AID): #16kLvy5x (MATLAB)
文章代碼(AID): #16kLvy5x (MATLAB)