Matlab 带for循环的条件语句
不知道我在这里做错了什么 我试图为以下函数创建一个带有条件语句的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
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风格,但他想用于循环:)