我有代码从存储在几个.csv文件中的数据生成2D绘图:
clearvars;
files = dir('*.csv');
name = 'E_1';
set(groot, 'DefaultLegendInterpreter', 'none')
set(gca,'FontSize',20)
hold on;
for file = files'
csv = xlsread(file.name);
[n,s,r] = xlsread(file.name);
des_cols = {'Stress','Ext.1(Strain)'};
colhdrs = s(2,:);
[~,ia] = intersect(colhdrs, des_cols);
colnrs = flipud(ia);
file.name = n(:, colnrs);
file.name = file.name(1:end-500,:);
plot(file.name(:,2),file.name(:,1),'DisplayName',s{1,1});
end
ylabel({'Stress (MPa)'});
xlabel({'Strain (%)'});
title({name});
legend('show');
我想要做的是修改代码,以便将.csv数据制作的2D绘图连接到3D绘图中,其中一个轴是files
类似.csv的索引这张post顶部的图片。我想到了使用该帖子中的plot3
,但我不确定如何让它发挥作用。
根据我的理解,我需要创建3个新矩阵xMat, yMat, zMat
。每个矩阵的列包含来自csv文件的数据,而yMat
包含的列只是csv的索引,但我不完全确定从何处开始。
感谢您的帮助!
答案 0 :(得分:0)
您可以在循环中调用plot3
,如下所示。基本上将Y值更改为Z值。然后,对于循环的每次迭代,将Y递增1。
figure;
a = axes;
grid on;
hold(a,'on');
x = 0:.1:4*pi;
for ii = 1:10
plot3(a,x,ones(size(x))*ii,sin(x));
end
view(40,40)
修改代码看起来如下所示。请注意,由于我没有你的CSV,我无法测试任何这些。
clearvars;
files = dir('*.csv');
name = 'E_1';
set(groot, 'DefaultLegendInterpreter', 'none')
set(gca,'FontSize',20)
a = gca;
hold on;
ii = 1;
for file = files'
csv = xlsread(file.name);
[n,s,r] = xlsread(file.name);
des_cols = {'Stress','Ext.1(Strain)'};
colhdrs = s(2,:);
[~,ia] = intersect(colhdrs, des_cols);
colnrs = flipud(ia);
file.name = n(:, colnrs);
file.name = file.name(1:end-500,:);
plot3(a,file.name(:,2),ones(size(file.name(:,2))).*ii,file.name(:,1),'DisplayName',s{1,1});
ii = ii+1;
end
view(40,40);
ylabel({'Stress (MPa)'});
xlabel({'Strain (%)'});
title({name});
legend('show');