Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 带for循环的条件语句_Matlab_Loops_If Statement_For Loop_Conditional - Fatal编程技术网

Matlab 带for循环的条件语句

Matlab 带for循环的条件语句,matlab,loops,if-statement,for-loop,conditional,Matlab,Loops,If Statement,For Loop,Conditional,不知道我在这里做错了什么 我试图为以下函数创建一个带有条件语句的for循环。我想让它,所以h不是一个向量。我用增量0.1对1到5执行此操作 Y = f(h) = h^2 if h <= 2 or h >= 3 Y = f(h) = 45 otherwise Y=f(h)=h^2如果h=3 Y=f(h)=45,否则 我的代码是 for h = 0:0.1:5 if h <= 2; Y = h^2; elseif h >= 3; Y = h^2; el

不知道我在这里做错了什么

我试图为以下函数创建一个带有条件语句的for循环。我想让它,所以
h
不是一个向量。我用增量0.1对1到5执行此操作

Y = f(h) = h^2    if h <= 2 or h >= 3
Y = f(h) = 45     otherwise
Y=f(h)=h^2如果h=3
Y=f(h)=45,否则
我的代码是

for h = 0:0.1:5
if h <= 2;
   Y = h^2;
elseif h >= 3;
Y = h^2;
else;
   h = 45;
end
end
h=0:0.1:5时的

如果h=3;
Y=h^2;
其他的
h=45;
终止
终止

这可以更容易地完成,但使用for循环,我认为您可以使用:

h=0:0.1:5;
y=zeros(1,length(h));

for i=1:length(h)
    if or(h(i) <= 2, h(i) >= 3)
       y(i) = h(i)^2;
    else
       y(i) = 45;
    end
end
h=0:0.1:5;
y=零(1,长度(h));
对于i=1:长度(h)
如果或(h(i)=3)
y(i)=h(i)^2;
其他的
y(i)=45;
终止
终止

这可以更容易地完成,但使用for循环,我认为您可以使用:

h=0:0.1:5;
y=zeros(1,length(h));

for i=1:length(h)
    if or(h(i) <= 2, h(i) >= 3)
       y(i) = h(i)^2;
    else
       y(i) = 45;
    end
end
h=0:0.1:5;
y=零(1,长度(h));
对于i=1:长度(h)
如果或(h(i)=3)
y(i)=h(i)^2;
其他的
y(i)=45;
终止
终止

为什么要避免使用
h
数组?MATLAB专门研究阵列运算。事实上,在Matlab中,对于循环,通常比<代码>要快,这在C++中开始编码是违反直觉的。

代码的矢量化验证示例可以是:

h = 0:0.1:5;
inds = find(h > 2 & h < 3);  % grab indices where Y = 45
Y = h.^2;  % set all of Y = h^2
Y(inds) = 45;  % set only those entries for h between 2 and 3 to 45

似乎是对MATLAB代码进行矢量化的好入门。

为什么要避免使用
h
数组?MATLAB专门研究阵列运算。事实上,在Matlab中,对于循环,通常比<代码>要快,这在C++中开始编码是违反直觉的。

代码的矢量化验证示例可以是:

h = 0:0.1:5;
inds = find(h > 2 & h < 3);  % grab indices where Y = 45
Y = h.^2;  % set all of Y = h^2
Y(inds) = 45;  % set only those entries for h between 2 and 3 to 45

似乎是对MATLAB代码进行矢量化的一个很好的入门教程。

h必须从1开始;Matlab要求。在你的“else”条件下,你的意思是Y=45吗?循环似乎永远不会达到此else条件,因为h>=3将为真,直到h等于5。
对于start:inc:end\…
,就像这样,它们都不必是1,也不必是整数。OP也有
Y=f(t)=h^2
,一个
t
的函数,它甚至没有使用变量
t
哦,天啊,是的,你是对的,我想到了一个关于我的开始的错误:值,但它当然可以是任何东西,谢谢你指出!h必须从1开始;Matlab要求。在你的“else”条件下,你的意思是Y=45吗?循环似乎永远不会达到此else条件,因为h>=3将为真,直到h等于5。
对于start:inc:end\…
,就像这样,它们都不必是1,也不必是整数。OP也有
Y=f(t)=h^2
,一个
t
的函数,它甚至没有使用变量
t
哦,天啊,是的,你是对的,我想到了一个关于我的开始的错误:值,但它当然可以是任何东西,谢谢你指出!更详细的matlab-y答案:
h=0:0.1:5;y=h.^2;y(h>=2&h这当然是很好的MATLAB风格,但他想用循环:)来获得更为MATLAB-y的答案:
h=0:0.1:5;y=h.^2;y(h>=2&h这当然是很好的MATLAB风格,但他想用于循环:)