在MATLAB中for循环中嵌套if语句是否有任何特殊规则?

我正在尝试创建一个信号,然后通过对我首先创建的CT信号进行采样来构建一个离散时间信号。直到最后一个for循环,事情运行良好,但我需要采用T分隔N个样本。没有if语句,我得到一个索引越界错误,我不得不在信号持续时间内限制采样。出于某种原因,我的代码一次只进入if语句,而对于调试,我打印出if和if之外的值。尽管逻辑操作在多次迭代中应该是正确的(打印语句将显示值),但它不会在if语句内打印语句。这里有什么问题?在MATLAB中for循环中嵌套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))));**span 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

回答:

sizeConstT = size(xConstT);所以你比较浮点数到一个数组中创建一个1x2的阵列,和你的代码进入,如果循环只在比较到阵列中的每个元素是成功的。这个例子说明这个问题:

if 1 <= [1 12]; disp('one'); end % <- prints 'one' 

if 2 <= [1 12]; disp('two'); end % <- prints nothing

你的代码将与sizeConstT = length(xConstT);

工作

以上是 在MATLAB中for循环中嵌套if语句是否有任何特殊规则? 的全部内容, 来源链接: utcz.com/qa/259987.html

回到顶部