Matlab中基于Meshgrid转置U矩阵以保持绘图效果的技术咨询
解决转置U矩阵后保持绘图效果的问题
嘿,我来帮你理清楚怎么调整A矩阵,让转置U之后绘图效果和原来一模一样!
首先得明白咱们原来的矩阵结构:你用[U,V] = meshgrid(Y,X)生成的U,是每行都重复Y的元素;V则是每列重复X的元素。现在你把U转置,它就变成了每列重复X的结构(和原来的V长得一样),这时候原来绘图用的「中间行数据」就变成了「中间列数据」,所以A矩阵也得跟着调整,才能对应上原来的数值关系。
具体要改的三步:
- 先转置U和V
直接对矩阵做转置操作就行:U = U'; V = V'; - 同步转置A和B
因为A、B是和U、V同维度生成的,转置它们才能保证每个位置的数值和U、V的对应关系不变:A = A'; B = B'; - 修改绘图的索引方式
原来咱们取的是矩阵的中间行,现在转置后行和列的意义互换了,得改成取中间列:% 先算出中间列的索引 mid_idx = (size(U,2)+1)/2; % 替换原来的plot命令 plot(U(:,mid_idx), A(:,mid_idx)); plot(V(:,mid_idx), B(:,mid_idx));
为啥这么改就管用?
举个例子:原来U的第2行是[1,2,3,4](Y的全量),转置后这行就变成了U的第2列。A原来的第2行是对应这些Y值的结果,转置后也变成了A的第2列。这时候取U和A的第2列绘图,得到的x-y数据和原来取第2行完全一样,画出来的曲线自然和原来没差!
另外提一句:如果你只是想让U一开始就是列重复的结构,其实可以直接把meshgrid的参数改成[U,V] = meshgrid(X,Y),这样生成的U本身就是你想要的结构,不用手动转置——不过这得看你有没有其他必须手动转置的原因啦。
内容的提问来源于stack exchange,提问作者Shika93
相关产品推荐
相关产品推荐

