【问题标题】:Is there any special rules for nesting if-statement in for-loop in MATLAB?在 MATLAB 的 for 循环中嵌套 if 语句有什么特殊规则吗?
【发布时间】:2017-12-03 08:06:32
【问题描述】:

我正在尝试创建一个信号,然后通过对我首先创建的 CT 信号进行采样来构建一个离散时间信号。直到最后一个 for 循环,一切正常,但我需要取 N 个由 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

【问题讨论】:

    标签: matlab signals signal-processing


    【解决方案1】:

    sizeConstT = size(xConstT); 创建一个 1x2 数组,以便您将浮点数与数组进行比较,并且仅当与数组的每个元素的比较成功时,您的代码才会进入 if 循环。这个例子说明了这个问题:

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

    您的代码将适用于sizeConstT = length(xConstT);

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-21
      • 1970-01-01
      相关资源
      最近更新 更多