2

这是计算奈奎斯特稳定性标准的函数的一部分。re当向量或im没有五个元素时,函数会出错:

尝试访问 im(5);索引超出范围,因为 numel(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
4

2 回答 2

1

这里有两种扩展向量的方法,以确保它至少有 5 个元素。每个人都有不同的想法,但做的一样。

最紧凑:

x = [1 2 3];
x(end+1:5) = 0;

将零分配给矩阵后面的所有元素,直到第五个元素。

但是,如果您已经知道元素的数量,则更紧凑:

x = [1 2 3];
if numel(x)<5
   x(5) = 0;
end

请注意,这将自动用零扩展,直到它有 5 个元素。无论向量的方向如何,这些方法的优势在于它可以工作。

于 2013-09-23T11:35:46.970 回答
0

如果你想用零填充你的向量以确保它至少有 5 个元素,我建议如下:

  1. 制作 5 个零的向量
  2. 用你的向量填充 pad 的第一个 X 元素(让我们称之为A

例如Abegin 小于 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 
于 2013-09-23T11:12:17.393 回答