【问题标题】:Looping across columns for storing interpolated values跨列循环以存储插值
【发布时间】:2018-07-13 13:49:52
【问题描述】:

我正在尝试为从 2 到结束列的所有列插入值。 .我编写了一个代码,将所有 Nans 的所有插值放入矩阵中。

例如:第 1 列对应自变量,第 2 列和第 3 列对应对象 '32' 的 X 和 Y 坐标。同样,我想遍历所有列标题并放置插值。任何解决此问题的帮助将不胜感激。

data_to_be_interpolated = final_plot_matrix(:,2:end);
missing_part = zeros(length(data_to_be_interpolated,1),data_to_be_interpolated,2);
for ip = 1:1:data_to_be_interpolated
    missing_part(2:end,ip) = fillmissing(data_to_be_interpolated(2:end,ip),'linear','SamplePoints',data_to_be_interpolated(2:end,1));
end
missing_part(:,1) = data_to_be_interpolated(:,1);
missing_part(1,:) = data_to_be_interpolated(1,:);

错误:

Error using matlab.internal.math.checkSamplePoints (line 27)
'SamplePoints' value contains Inf or NaN.

Error in fillmissing/parseInputs (line 424)
        x = matlab.internal.math.checkSamplePoints(varargin{i+1},A,false,dim,'fillmissing');

Error in fillmissing (line 116)
[A,AisTable,intM,intConstOrWinSize,extM,x,dim,dataVars] = 
parseInputs(A,fillMethod,varargin{:});

Error in intrepolation_data (line 15)

missing_part(2:end,ip) = fillmissing(data_to_be_interpolated(2:end,ip),'linear','SamplePoints',data_to_be_interpolated(2:end,1));

我们将不胜感激。

【问题讨论】:

  • 阅读(再次)minimal reproducible example 是什么以及为什么它对于获得帮助很重要
  • @AnderBiguri 道歉。我希望它现在清楚了。
  • zeros(length(data_to_be_interpolated,1),data_to_be_interpolated,2); 这行得通吗? length 不接受两个输入参数,您似乎需要一个 2D 矩阵,但带有 3 个输入参数的 zeros 给您一个 3D 矩阵。

标签: matlab for-loop interpolation


【解决方案1】:

试试这个。它会将“data_to_be_interpolated”值存储到第二列中的缺失部分矩阵中。

   data_to_be_interpolated = final_plot_matrix(:,:);
   missing_part = 
   zeros(size(data_to_be_interpolated,1),size(data_to_be_interpolated,2)-1);

   for ip = 1:size(missing_part,2)
   missing_part(:,ip) = data_to_be_interpolated(:,ip+1);
   end

【讨论】:

    【解决方案2】:

    只需使用 for 循环遍历每一列。

    missing_part = zeros(size(final_plot_matrix,1),size(final_plot_matrix,2));
    for ip = 2:1:data_to_be_interpolated
        missing_part(2:end,ip) = fillmissing(final_plot_matrix(2:end,ip),'linear','SamplePoints',final_plot_matrix(2:end,1));
    end
    missing_part(:,1) = final_plot_matrix(:,1);
    missing_part(1,:) = final_plot_matrix(1,:);
    

    记住,这个final_plot_matrix 应该是整个数据。

    【讨论】:

    • @it 似乎不起作用。我添加了修改后的代码。
    • 现在看看。顺便问一下,您真的是 MATLAB 新手吗?
    • 是的。最近刚开始学习。我仍然收到错误消息。显示修改后的代码和错误。
    • 那么你应该尝试调试错误。你能发现这里有什么问题吗? missing_part(2:end,ip) = fillmissing(data_to_be_interpolated(2:end,ip),'linear','SamplePoints',final_plot_matrix(2:end,1));看看这个和你的 for 循环里面的一个。我希望你能明白。
    • 感谢您的帮助。我试过调试它,我仍然无法解决它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-07
    • 2015-08-25
    相关资源
    最近更新 更多