matlab中无法进入循环

改循环无法计画出每一个rows的modwt分解图

rows = 1;
while rows<=J+1
    wi = w(rows,:);
    subplot(J+1,1,rows);
    plot(t,wi);
    rows = rows+1;
end

chatgpt:不喜勿喷
您的代码中,循环迭代了变量 rows,并且在每次迭代中提取了一个名为 wi 的行向量。接下来,在每次迭代中,您都调用了 subplot 函数来在当前图形窗口中创建一个子图,并在该子图中使用 plot 函数来绘制 wi。根据您提供的代码,似乎您的问题是无法计算每个 wi 的 modwt 分解图。

要计算每个 wi 的 modwt 分解图,您可以使用以下代码来替换您的循环:

% 设置 modwt 参数
wname = 'db4';
J = 4;
dwtmode('per');

for rows = 1:J+1
    % 获取当前行的数据
    wi = w(rows, :);

    % 计算 modwt 分解
    [W, frequencies] = modwt(wi, J, wname);

    % 在子图中绘制分解图
    subplot(J+1, 1, rows);
    plot(t, wi);
    hold on;
    for j = 1:J
        plot(t, W(j, :), 'LineWidth', 1.5);
    end
    hold off;
    title(['MODWT of w_' num2str(rows-1)]);
    xlabel('Time');
    ylabel('Amplitude');
end

这个代码中,我们首先设置了 modwt 分解所需的参数。然后,我们使用 for 循环迭代 rows 变量,并在每次迭代中获取当前行的数据。接下来,我们使用 modwt 函数来计算当前行的 modwt 分解,并获取分解系数和频率向量。最后,我们在子图中绘制当前行的原始数据和 modwt 分解图,并设置标题、标签和图例。