matlab中elseif語句為什麼不執行,求大神指教

時間 2022-01-13 11:45:04

1樓:我lp是

程式修改為:

x4=linspace(103.104,220,10);

len=length(x4);

for i=1:len

if x4(i)>=103.104&x4(i)<149.266;

y4(i)=-0.0009*(x4(i)-103.104).^2-0.2886*(x4(i)-103.104)+50;

elseif x4(i)>=149.266&x4(i)<197.62;

y4(i)=0.0017*(x4(i)-149.266).^2-0.2532*(x4(i)-149.266)+36.5873

elseif x4(i)>=197.62&x4(i)<219.002;

y4(i)=0.0008*(x4(i)-197.62).^2-0.1335*(x4(i)-197.62)+27.5714

endend

你的倒數第四行elseif中 兩個x4應該都改為x4(i)。問題解決,給我滿分啊。

為什麼第一個if語句執行後不執行第二個if語句。if elseif 巢狀語句是怎麼看的啊

2樓:妖搦天

首先,這種題要知道答案很簡單,自己把題目放到編譯軟體上執行一下就行,然後可以通過結果反推過程。

這道題我編譯出來結果是2,以下是我的邏輯:

首先,要知道else配對的是哪個if,這個配對方法很簡單,由於沒加括號,直接往上行找離它最近的沒配對的if就行。本題與else配對的是第二個if;

其次,由於沒有加括號,第一個if只能控制下一行的語句,即第二個if;第一個if無效,所以程式判定下一行的第二個if無效,而再往下一行的語句又受第二個if控制,所以它受到連鎖反應,間接被無效了。下面的else與第二個if配對,第二個if無效就是else配對物件無效,else自然就跟著無效了。那麼c=2就沒有受到任何改變,原樣輸出。

這道題,雖然沒有加括號括住下面的內容,但是最後因為if的性質,產生了連環無效,實際上與加了括號的效果一樣

這裡引起迷惑的應該是與else配對的if被無效後,else的反應;尤其是本題有兩個if,會讓人想到配對了的if無效後,else還可能直接與另一個if形成配對關係。但是由實際編譯的結果可知,else是從一而終的,它最開始配對的if無效,它也會直接跟著無效,不會與其他else配對。

3樓:百i度網友

程式中初始化a等於2,b等於-1,c等於2,因此第一個if語句的判斷條件(a

只有在條件判斷語句if的條件表示式為「真」的時候,程式才會執行if語句內的操作。

4樓:匿名使用者

a = 2 b = -1

所以a

第一個if判斷就是為真,繼續下一層的if(b<0),但是實際上為假,直接到else了

matlab中else if語句只執行了第二句,程式沒問題,邏輯上**有錯誤?

跪求 matlab中if語句中的elseif語句結束如何返回if後命令繼續執行

5樓:匿名使用者

如果是下列結構:

for i=1:n1 %第一個for迴圈

執行語句1

for j=1:n2 %第二個for迴圈

執行語句2

if (條件)

執行語句3

continue

end執行語句4

end執行語句5

end當if條件滿足並執行continue語句後,「執行語句4」不執行,跳轉到第二個for迴圈,即i自動加1,再繼續執行。

為什麼在matlab中我想執行一個多項選擇的語句:用if;elseif 之後 只執行到第一個額雷鋒呢?

6樓:書宬

clear;clc

t=;h=;

for a=0:50:7000

if a<=200

s=0;

elseif    a<=700&a>200                 %  要這

樣寫s=6*a;

elseif    a<=1200&a>700              %  要這樣寫

s=5000;

elseif    a<=1500&a>1200            %  要這樣寫

s=16.7*a;

elseif    a<=5100&a>1500           %  要這樣寫

s=10000;

elseif    a<=6900&a>5100           %  要這樣寫

s=10000-5.6*a;

else

s=0;

endt=[t;a];

h=[h;s];

end[t h]

plot(t,h)

7樓:劉賀

乾脆別用迴圈了:

clear all;clc;

t=;h=;

a=0:50:7000;

s=0*(a<=200)+6*a.*(a>200&a<=700)+5000*(a>700&a<=1200)+...

16.7*a.*(a>1200&a<=1500)+10000*(a>1500&a<=5100)+...

(10000-5.6*a).*(a>5100&a<=6900)+0*(a>6900);

t=[t a];

h=[h s];

plot(t,h);

新手請教,c語言中為什麼if if else的巢狀語句中,執行了第一個if第二個會不執行?(輸出的答案是2) 5

8樓:匆匆過客

else總是與最近的if匹配,因為第一句if(a

9樓:御含靈

else總是最近匹配的

你多寫一對括號就明白了

#include

printf("%d",c);}

10樓:匿名使用者

因為第一個if條件不滿足,不能執行裡面巢狀的第二個if

11樓:匿名使用者

#include

int main(void)

printf("%d",c);}

最後一個else為什麼沒有加if時有錯誤,加了之後就可以執行,求大神指教,

12樓:匿名使用者

因為只是一個巢狀是if.......else if.......else if語句,去掉最後一個if邏輯判斷不完整

matlab if else語句怎麼用?

13樓:木偶bu會流淚

matlab中if else語句的使用方法示例:

第一步:首先,找到開始選單的matlab圖示,並開啟matlab。

第二步:在matlab的軟體介面中點選file-new-m-file,建立新檔案。

第三步:將所要建立的新檔案命名為test,並點選儲存。

第四步:然後如圖所示,輸入如下**

第五步:點選上方工具欄中的綠色三角形的執行按鈕,使其執行即可

14樓:園林植物手冊

1、先開啟軟體,點選左上角進行新建指令碼,即建立一個m檔案,開啟編譯介面後,先將此m檔案進行儲存,注意命名規則,只能用英文加下劃線。

2、對於只用兩種情況的問題,則只用到else即可,第一個if說明情況一,else說明不滿足情況一的所有其他情況。注意結尾要加end,不然如圖命令提示所示,會報錯。

3、對於多個情況,可設定多個判斷,對於有新判斷條件的情況用elseif新增,下圖所示,為3種情況,根據a的值,執行後滿足第二種情況。

4、對於其他情況,如果判斷出符合這種情況可以不寫,如符合else條件,但是不用執行程式,則可連else都不寫,也可寫上,只是後面不寫執行語句,程式也不會報錯,對於elseif、if也是,不需執行程式,也可寫上條件判斷語句,但是不寫下一步語句,也可以。

5、接著用多級if語句建立了下圖多級判斷程式,可以實現根據輸入的字母,輸出對應引數b的值,而且不會區分字母大小寫,因為同一判定條件加入了字母大小寫形式。但是如果條件再多,程式將會無限延長,可以用其他思路,進行解決。

6、這裡採用陣列預先儲存判斷條件,及引數b的值,因為條件相同,用for迴圈加上一條條件判斷,即可實現多級條件功能。但是要注意,條件形式要相同,否則不能寫成統一形式。這樣如何使用,及一種可行的替換思路,介紹完成。

15樓:匿名使用者

matlab if else語句怎麼用?

存為一個f.m檔案

function out=f(x)

if x>1

out=x^2+1

else

out=2*x

end**********=

然後呼叫

>>f(2)

>>f(-1)

年年順景則源廣 歲歲平安福壽多 吉星高照

16樓:匿名使用者

if 條件1

結果else 不滿足條件1

結果end

例子:a=0;b=1;

if a>b

x=2;

else x=3;

end》xx=3

17樓:英竹闕雋潔

ifh(i,j)==a1(i,j)

e(i,j)=a(i,j);

elseif

h(i,j)==b1(i,j)

e(i,j)=b(i,j);

elseif

h(i,j)==c1(i,j)

e(i,j)=c(i,j);

else

h(i,j)==d1(i,j)

e(i,j)=d(i,j);

end對這一段程式仔細分析,我沒有仔細分析前面的程式,但可以猜測以下,h(i,j)肯定會和a1(i,j)、b1(i,j)、c1(i,j)、d1(i,j)中的某一個相等,這樣當h(i,j)和a1(i,j)、b1(i,j)、c1(i,j)不相等的時候,就會執行到最後一條else語句

else

h(i,j)==d1(i,j)

e(i,j)=d(i,j);

這時候ans=1;就會出現了。

也就是matlab把h(i,j)==d1(i,j)當做是一條單獨的語句,而不是判斷條件。

究其原因,就是,if-elseif-else-end最後一個else是不用判斷條件的,前面的條件都不滿足就會執行else後的語句。

再加上,用來計算的矩陣是由rand隨機生成的,這樣,就可以很好的解釋為什麼有時多,有時少,數量不確定的現象了。

所以修改的辦法是:1,把h(i,j)==d1(i,j)刪除;2,把else改成elseif。

對於這個程式,我感覺用if語句還是比較合理的,用switch-case可以用,但是它不適合這樣的分支條件

我想請問關於matlab中,for 迴圈下有三個並列的if語句,如果不滿足其中的

18樓:匿名使用者

按照你的意願,像這種迴圈語句裡的判斷語句,應該採用下列程式for(i=1:n)

if()

執行1elseif()

執行2else

執行3end

end這樣的判斷是連續的,即當條件不滿足時,程式會繼續往下去判斷,直到滿足時才停止判斷。

19樓:語言糾結戶

解決了麼?我也想知道

matlab中for語句中,怎樣把每i得到的結果都儲存在

建一個二維陣列,把i值按順序賦值組陣列,for語句執行完後,將陣列寫入想賦值的單元格區域即可。例 dim arry1 1 to 100 for t 1 to a i f t arry1 t i next t me.range a2 resize 100,1 arry1以上例子為將不每個i值寫入當前工...

如何在matlab中呼叫matlab中已有的函式

呼叫函式檔案 myfile.m clear clcfor t 1 10 y mylfg t end 自定義函式檔案 mylfg.m function y mylfg x 注意 函式名 mylfg 必須與檔名 mylfg.m 一致 y x 1 3 注 這種方法要求自定義函式必須單獨寫一個m檔案,不能與...

matlab的plot命令,matlab中 plot函式全部功能怎麼用

我行我素 畫出圖形後一看就明白了 中括號一般表示區間或資料點,plot 2,1.1 中表示y座標,plot 2,1.1,1.1,2 1.1,1.1,1.1,1.1 中表示x座標和y座標的區間端點和資料值 1 沒有中括號就是表示點的意思,第一個就畫點 2,1.1 2 像樓上說得,中括號是構造矩陣用的,...