这是计算奈奎斯特稳定性标准的函数的一部分。当向量re
或im
没有五个元素时,函数会出错:
试图访问im(5);因为数字(im)= 4,所以索引越界。 稳定性错误(第27行) tran(w)= re(1)+ re(2)* w。^ 1 + re(3)* w。^ 2 + re(4)* w。^ 3 + re(5) w。^ 4 + 1i (...
我想将0
分配给缺少的元素。
function answear=stability(re,im)
%% Function check stability of system
%re is real part of transmitation
%im is imagine part of transmitation
%% data
for n=1:length(re)
if(re(n) == [ ])
re(n) = 0;
end
end
for n=1:length(im)
if(im (n)== [ ])
im(n) = 0;
end
end
if( length(re) > length(im))
root = length(re);
else
root = length(im);
end
for w=1:root
tran(w) = re(1) + re(2)*w.^1 + re(3)*w.^2 + re(4)*w.^3 + re(5)*w.^4 +1i*(...
im(1) + im(2)*w.^1 + im(3)*w.^2 + im(4)*w.^3 +im(5)*w.^4);
end
答案 0 :(得分:1)
以下是扩展向量以确保其至少包含5个元素的两种方法。每个人都是从不同的想法开始,但也做同样的事情。
最紧凑:
x = [1 2 3];
x(end+1:5) = 0;
为矩阵后面的所有元素指定零,直到第五个元素。
但是,如果你已经知道了元素的数量,那就更紧凑了:
x = [1 2 3];
if numel(x)<5
x(5) = 0;
end
请注意,这将使用零自动扩展,直到它有5个元素。无论向量的方向如何,这些方法的优点在于它的工作原理。
答案 1 :(得分:0)
如果你想用零填充矢量以确定它至少有5个元素我建议如下:
A
)对于A
开头少于5且A
超过5个元素的示例:
A= [1 2 3]
n=5
pad = zeros(1,n)
pad(1:length(A)) = A
clear
A = [5 6 7 8 9 4 3]
n=5
pad = zeros(1,n)
pad(1:length(A)) = A