现在我有两个表格含有矩阵信息,这两个矩阵第一行和第一列是点的名称,矩阵内数据为零的单元格代表其对应的两个点之间不连线,数据不为零代表对应两个点连线,矩阵1是所有z轴为零的点,矩阵2是所有z轴不为零的点,我希望通过上述矩阵分别将z轴为零的点和z轴不为零的点按照上述方式连接起来,请给出修改后的代码内容:明白了,你想通过两个矩阵来连接z轴为零的点和z轴不为零的点。以下是修改后的代码示例:

% 读取矩阵1的数据
matrix1 = xlsread('矩阵1.xlsx');

% 读取矩阵2的数据
matrix2 = xlsread('矩阵2.xlsx');

% 提取点的名称
names = matrix1(2:end, 1); % 矩阵1和矩阵2的第一列为点的名称

% 提取坐标信息
x = matrix1(1, 2:end); % 矩阵1的第一行为x坐标
y = matrix1(2:end, 1); % 矩阵1和矩阵2的第一列为y坐标
z1 = matrix1(2:end, 2:end); % 矩阵1的数据为z轴为零的点
z2 = matrix2(2:end, 2:end); % 矩阵2的数据为z轴不为零的点

% 绘制三维散点图
figure;
hold on;

% 绘制z轴为零的点
for i = 1:length(x)
    for j = 1:length(y)
        if z1(j, i) ~= 0
            scatter3(x(i), y(j), 0, 'r', 'filled');
            text(x(i), y(j), 0, names{j}, 'Color', 'red', 'FontSize', 8);
        end
    end
end

% 绘制z轴不为零的点
for i = 1:length(x)
    for j = 1:length(y)
        if z2(j, i) ~= 0
            scatter3(x(i), y(j), z2(j, i), 'b', 'filled');
            text(x(i), y(j), z2(j, i), names{j}, 'Color', 'blue', 'FontSize', 8);
        end
    end
end

% 连接z轴为零的点
for i = 1:length(x)
    for j = 1:length(y)
        if z1(j, i) ~= 0
            % 找到对应的连接点
            idx = find(x == y(j));
            if ~isempty(idx) && z2(idx, i) ~= 0
                plot3([x(i), x(i)], [y(j), y(j)], [0, z2(idx, i)], '--k');
            end
        end
    end
end

xlabel('X');
ylabel('Y');
zlabel('Z');
title('三维图');
grid on;

请将 矩阵1.xlsx矩阵2.xlsx 替换为你实际使用的矩阵文件路径。代码会读取这两个文件中的矩阵数据,并根据z轴为零的点和z轴不为零的点进行绘制和连接。每个点的名称将显示在对应的坐标位置上。

请确保矩阵数据文件的格式正确,并且矩阵中的点名称、x坐标、y坐标和z轴数据与代码中的索引和变量对应正确。根据你的实际矩阵数据和需求,对变量和索引进行适当的调整。


原文地址: http://www.cveoy.top/t/topic/tZd 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录