【问题标题】:How to make smaller vector from a large one...? MATLAB如何从一个大的矢量制作更小的矢量......? MATLAB
【发布时间】:2014-06-09 15:46:06
【问题描述】:

我有一个长度为 185437 的大向量,我想制作一个新向量,用这个向量的平均值重新整形,但我需要新长度为 180*delay 因为在 x 轴上我必须有这样的,因为示例:

   delay=0.1
   x_axis=0:delay:180

我需要 y 轴(这个新向量)与这个 x_axis 大小相同,以便我可以绘制它。 我试过类似的东西:

   values_delay_sum_plot=mean(reshape(values_delay_sum,1/delay,length(values_delay_sum)*delay));

但它不起作用。第一个错误是整数值,后来我无法更改向量的大小。请注意, values_delay_sum 是我的大向量,我想从中为我的情节制作一个新向量。 提前致谢。

【问题讨论】:

  • 请解释清楚你想要什么
  • 亲爱的,我需要调整我的大向量的大小,以便能够在 x 轴 0:0.1:180 的这些条件下绘制它。不要像 values_delay_sum(1:1800) 那样调整它的大小。我想在这个较小的向量中获得大向量的平均值,这样我就不会失去分析的统计重要性。
  • 如果您查看数据:length(Values_delay_sum)*delay185437*0.1 = 18 543.7,这不是可用于 reshape 的整数。而且当你重塑时,尺寸不能改变。
  • 你可以试试reshape(values_delay_sum,1800,[])[]会计算第二维的大小。但是在您的情况下,数据不能被 1800 整除,因此在您的情况下不需要重塑。
  • 也许插值是一种合适的方法?

标签: matlab vector reshape


【解决方案1】:

正如@Schorsch 所说,我认为您需要interp1 功能。也许是这样的:

x_axis=linspace(0,185437,1801);
y_axis=interp1(values_delay_sum,x_axis);
plot(x_axis,y_axis);

如果您只想绘制新向量,而不是对应的原始 x_axis 值,只需绘制:

plot(y_axis)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-10
    • 1970-01-01
    • 2020-01-07
    • 2022-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多