如何在MATLAB中拼接两个向量?

如何在MATLAB中拼接两个向量?,matlab,vector,splice,Matlab,Vector,Splice,我需要根据一个条件拼接两个向量,这个条件也以向量为参数。例如: vec_cond=-5:5;%精确值的计算方式不同 vec1=0:10; vec2=5:15; 我需要根据第三个向量的条件,将两个向量中的值合成一个结果向量。让我们假设这是一个条件:vec\u cond>=0 如果这是真的,我希望vec_result在适当的索引上具有vec1中的值,如果不是,则在适当的索引上获取vec2中的值: vec\u result=vec1 if(vec\u cond>=0)else vec2 这是我的M

我需要根据一个条件拼接两个向量,这个条件也以向量为参数。例如:

vec_cond=-5:5;%精确值的计算方式不同
vec1=0:10;
vec2=5:15;
我需要根据第三个向量的条件,将两个向量中的值合成一个结果向量。让我们假设这是一个条件:
vec\u cond>=0

如果这是真的,我希望
vec_result
在适当的索引上具有
vec1
中的值,如果不是,则在适当的索引上获取
vec2
中的值:

vec\u result=vec1 if(vec\u cond>=0)else vec2
这是我的MATLAB脚本的一部分(最初的评论是捷克语),我需要使用它:

%%绘制输出电流和电压特性
R=100:5:2*10^3;%负载电阻[欧姆]
U_2=R.*(I*10^(-3));%负载电压[V]
U_1stab=U_LM+U_x+U_2;%最小所需输入电压
%用于稳定[V]
U_delta=U_1-U_1选项卡;%实际值与实际值之间的差异
%最低要求。输入电压[V]
U_2norm=U_1-U_LM-U_x%计算输出负载
%基于参数的电压[V]
I_z=U_2norm./R.*10^3;%基于负载电流参数的[mA]
I_r1=I*I_z.^0;%稳定器电流[mA]
因此,条件是
U_delta>=0

我尝试使用三元运算符,我发现:

I_图=(U_delta>=0):(@()I):(@()I_z);%电流拼接[mA]
U图=(Uδ>=0):(@()U 2):(@()U 2norm);%电压拼接[V]
这意味着对于
I_图
,如果满足条件,则取一个常量
I
并将其矢量化,否则取
I_z
矢量中的值。对于
U_图
,如果满足条件,则从
U_2
向量中取值,否则取
U_2norm的常量
,并将其向量化

但它不起作用,它告诉我:

Operator ':' is not supported for operands of type 'function_handle'.

Error in vypocet1 (line 52)
I_graph = (U_delta >= 0) : (@() I) : (@() I_z);         % Current splice  [mA]
我想我可能想使用
for
循环,但我不确定这对我有什么帮助,以及如何使用
for
循环构造必要的向量。

给定:

vec_cond = -5:5;
vec1     = 0:10;
vec2     = 5:15;
您可以设置:

out = vec2;
I = vec_cond >= 0;
out(I) = vec1(I);
这使用逻辑索引,即使用逻辑数组进行索引


顺便说一句,您找到的三元运算符是一个练习,用于重载特定类的
运算符,以执行它通常不执行的操作。注意在创建
vec\u cond
时如何使用冒号。这就是冒号操作符通常所做的。

我尝试使用三元操作符(如果MATLAB中确实存在类似的东西,我发现一些东西可能表明它确实存在),但没有起作用:
I\U graph=(U\U delta>=0):(@()I):(@()I\U z);U_图=(U_δ>=0):(@()U_2):(@()U_2形式)在这里找到:@CrisLuengo我相应地更新了问题,因为我尝试了一些不起作用的东西。我可以在MS Paint中绘制一个图表来显示我想要实现的目标。为了理解目标,背景是必要的。但若你们想要精简版本,我想根据一个条件拼接两个向量,这也需要一个向量作为参数。只要条件为真,就使用一个向量的值,否则我需要另一个向量的值。Python使这变得非常简单,但我需要格式化绘图,这在MATLAB中似乎更容易。我也可以在MS Excel中计算它,导出值的CSV,并将它们作为矩阵导入MATLAB。但这可能更复杂。我大概需要这样的图表:@CrisLuengo你想让我删除那些在计算中至关重要的电子元素吗?嗯,我想这会有用的。如果没有,那么我会删除它。我会尝试一下。谢谢,成功了:)