我正在尝试创建一个信号,然后通过对我首先创建的CT信号进行采样来构建离散时间信号。直到最后一个for循环,事情工作得很好,但我需要将T个分隔为T而没有if语句,我得到一个索引越界错误,我不得不在信号的持续时间内限制采样。出于某种原因,我的代码进入if语句一次,不再进行调试,我打印输出if和if的值。虽然逻辑操作对于多次迭代应该是正确的(打印语句将显示值),但它不会在if语句中打印语句。这有什么不对?
function x = myA2D(b,w,p,T,N)
%MYA2D description: Takes in parameters to construct the CT-sampled DT signal
%b,w,p are Mx1 vectors and it returns Nx1 vector.
timeSpace = 0:0.001:3*pi;
xConstT = zeros(size(timeSpace));
%Construct Xc(t) signal
for k = 1:size(b,1)
temp = b(k) .* cos(w(k).*timeSpace + p(k));
xConstT = xConstT + temp;
end
plot(xConstT);
%Sampling CT-Signal to build DT-signal
disp(strcat('xConstT size',int2str(size(xConstT))));**strong text**
x = zeros(N,1);
sizeConstT = size(xConstT);
for i = 0:N-1
index = i .* T .* 1000 + 1;
disp(strcat('indexoo=',int2str(index)));
disp(strcat('xConstSizeeee',int2str(sizeConstT)));
if index <= sizeConstT
disp(strcat('idx=',int2str(index)));
disp(strcat('xSize',int2str(sizeConstT)));
%x(i+1,1) = xConstT(index);
end
end
end
答案 0 :(得分:0)
sizeConstT = size(xConstT);
创建一个1x2数组,以便将float与数组进行比较,只有在与数组的每个元素的比较成功时,代码才会进入if循环。此示例说明了此问题:
if 1 <= [1 12]; disp('one'); end % <- prints 'one'
if 2 <= [1 12]; disp('two'); end % <- prints nothing
您的代码将与sizeConstT = length(xConstT);