【问题标题】:Why I need to take transpose to plot a surface correctly?为什么我需要转置来正确绘制曲面?
【发布时间】:2017-05-30 06:01:54
【问题描述】:

假设 C 是一个矩阵,我需要针对两个参数 parameter1 和 parameter2 绘制它。C 是 parameter1 和 parameter2 的函数,所以我运行以下循环并将 C 的值作为两个参数的函数存储在矩阵中C

i_1=0;
for parameter1=1:9
i_1=i_1+1; j_1=0;
for parameter2=2:6
j_1=j_1+1;
C(j_1,i_1)=f(parameter1, parameter2);
end
end
i=1:9;
j=2:6;
[X,Y] = meshgrid(i,j);
c=surf(X,Y,C.');

我的问题是,为什么我需要在这里转置 C 以获得正确的绘图?因为当我不这样做时,我会得到相反的结果。是不是因为行被视为Y轴,列被视为X轴?

如果我将 C 作为三个变量的函数,如何进行 scatter3,那么我应该如何进行,因为现在 C 无法转置?

【问题讨论】:

  • 要使用冲浪 X,Y,C 应该是相同的维度......
  • 但我想知道这是否是循环,那么哪个轴将是 x,哪个轴将是 Y,尤其是当所有轴具有相同大小时,或者存在两个以上轴的情况。

标签: matlab 3d surface


【解决方案1】:

好的..如果您感到困惑...是否要转置...您输入 if 条件并继续 surf

i=1:9;
j=2:6;
[X,Y] = meshgrid(i,j);
C1 = zeros(length(i),length(j)) ;

for parameter1=1:9
    for parameter2=2:6
        C1(parameter1,parameter2-1)= rand ;%f(parameter1, parameter2);
    end
end


if ~isequal(size(X),size(C1)) ;
    c=surf(X,Y,C1');
else
    c=surf(X,Y,C1);
end  

【讨论】:

  • 另请注意.....您需要使用 X,Y 来冲浪.....您可以立即将 surf 与您的 C 数据一起使用..it绘制表面 w.r.t 到它的索引....
猜你喜欢
  • 1970-01-01
  • 2013-11-15
  • 1970-01-01
  • 2020-06-24
  • 2015-02-24
  • 1970-01-01
  • 1970-01-01
  • 2016-07-12
  • 1970-01-01
相关资源
最近更新 更多