12
返回列表 发新帖
楼主: LastPlaceHero

[已答复] 利用内外径画圆环

[复制链接]

新手

12 麦片

财富积分


050


2

主题

14

帖子

0

最佳答案
 楼主| 发表于 2020-5-20 15:23:39 | 显示全部楼层
本帖最后由 LastPlaceHero 于 2020-5-20 16:22 编辑
15631202458 发表于 2020-5-20 08:42
clear;
clc;
data=xlsread('D:\Code\Matlab\matlabweb\data.xlsx');

您好,1.我解释一下,内径是直径,所以等分40份只有20个;2.另外我选了第一种情况运行结果出现错误提示错误使用  + 矩阵维度必须一致。我看了一下程序好像是dr和r1_in列数不相等,应该给dr加39列,您看我理解的对吗?我用笨办法在表中给dr后面加了39列0运行出来了图像如下,但我不会给dr直接在MATLAB里加,请指教;
3.另外图片里运行出来多出来一块没有闭合是怎么回事?
]5T}8U09WRIS[ADL19B]AF8.png
DB{V5%QENK[9YI6LNUKD8_E.png
回复此楼 已获打赏: 0 积分

举报

新手

12 麦片

财富积分


050


2

主题

14

帖子

0

最佳答案
 楼主| 发表于 2020-5-20 17:46:53 | 显示全部楼层
15631202458 发表于 2020-5-20 08:42
clear;
clc;
data=xlsread('D:\Code\Matlab\matlabweb\data.xlsx');

您好,由于我贴出来一部分数据,我刚才用所有的数据试运行了一下,大概3000组数据,出来的图形几乎是黑的,然后我复制图形的时候出现了报错
错误使用 print>LocalPrint (line 291)
使用 Painter 渲染时内存不足 - 请尝试使用 ZBuffer
出错 print (line 233)
    LocalPrint(pj);
出错 graphics.internal.copyFigureHelper>oldFigureCopy (line 27)
出错 graphics.internal.copyFigureHelper (line 12)
出错 editmenufcn (line 65)
        graphics.internal.copyFigureHelper(hfig)

~4@~XB[G]B$_SSBJJGNNORN.png
K[1V5NCO_%XK[66@3KQ}OA7.png
回复此楼 已获打赏: 0 积分

举报

新手

12 麦片

财富积分


050


2

主题

14

帖子

0

最佳答案
 楼主| 发表于 2020-5-21 10:58:19 | 显示全部楼层
别沉啊,有大神能帮忙解决吗:'(:'(: ,现在存在的问题主要有:1.怎样给dr直接在程序里加39列0,
2.另外图片里运行出来多出来一块没有闭合是怎么回事?3.我把三千组数据全部导入结果出现错误提示错误使用 print>LocalPrint (line 291)
使用 Painter 渲染时内存不足 - 请尝试使用 ZBuffer,这个应该怎么办?
回复此楼 已获打赏: 0 积分

举报

新手

12 麦片

财富积分


050


2

主题

14

帖子

0

最佳答案
 楼主| 发表于 2020-5-21 21:59:53 | 显示全部楼层
再求助一次,搞了一天还是没搞出来,有大神能帮忙解决吗:'(:'(: ,现在存在的问题主要有:1.怎样给dr直接在程序里加39列0(我是用笨办法直接在数据表格里加了39列0),
2.另外图片里运行出来多出来一块没有闭合是怎么回事?3.我把三千组数据全部导入结果出现错误提示:
    错误使用 print>LocalPrint (line 291)
    使用 Painter 渲染时内存不足 - 请尝试使用 ZBuffer,这个应该怎么办?
代码如下:
data=xlsread('C:\Users\Administrator\Documents\MATLAB\testdata.xlsx');%由于数据需要保密,我只截取了一部分数据放过在附件里(加了39列0),没有加39列0的数据在一楼
z=data(:,2);
dr=data(:,3:42);
r=1/2*data(:,43:end);
c=[0,0];
azi=0;%azimuth方位角
N=size(r,2);
N1=2*N;
daziN1 = linspace(azi,2*pi+azi,N1);
r1_in=[r,r];
r1_out=r1_in+dr;
[x1_in,y1_in,z1_in]=getxyzByRadius(z,c,daziN1,r1_in);%% 调用函数,将圆心,半径数据转换成xyz
[x1_out,y1_out,z1_out]=getxyzByRadius(z,c,daziN1,r1_out);
figure%% 绘图
surf(x1_in,y1_in,z1_in,'FaceAlpha',0.7,'FaceColor','y')
hold on
surf(x1_out,y1_out,z1_out,'FaceAlpha',0.4,'FaceColor','b')
axis square

%函数
function [x,y,z]=getxyzByRadius(z0,c0,dazi,r);
for i=1:length(z0)
    for j=1:length(dazi)
        x(i,j)=c0(1)+sin(dazi(j))*r(i,j);
        y(i,j)=c0(1)+cos(dazi(j))*r(i,j);
        z(i,j)=z0(i);
    end
end
end


testdata (1).xlsx

11.64 KB, 下载次数: 0

回复此楼 已获打赏: 0 积分

举报

新手

12 麦片

财富积分


050


2

主题

14

帖子

0

最佳答案
 楼主| 发表于 2020-5-22 23:09:28 | 显示全部楼层
本帖最后由 LastPlaceHero 于 2020-5-23 12:04 编辑

再求助一次,又搞了一天解决了不闭合问题,其余的有大神能帮忙解决吗:'(:'(: ,现在存在的问题主要有:
1.怎样给dr直接在程序里加39列壁厚(壁厚相同)(我是用笨办法直接在数据表格里复制了39列)2.我把三千组数据全部导入出的图几乎全黑,复制图形的时候就出现错误提示:    错误使用 print>LocalPrint (line 291)
    使用 Painter 渲染时内存不足 - 请尝试使用 ZBuffer,这个应该怎么办?
代码如下:
data=xlsread('C:\Users\Administrator\Documents\MATLAB\testdata1(1).xlsx');%由于数据需要保密,我只截取了一部分数据放过在附件里(加了39列壁厚),没有加39列壁厚的数据在一楼
z=data(:,2);
dr=data(:,3:42);
r=1/2*data(:,43:end);
c=[0,0];
azi=0;%azimuth方位角
N=size(r,2);
N1=2*N;
daziN1 = linspace(azi,2*pi+azi,N1);
r1_in=[r,r];
r1_out=r1_in+dr;
[x1_in,y1_in,z1_in]=getxyzByRadius(z,c,daziN1,r1_in);%% 调用函数,将圆心,半径数据转换成xyz
[x1_out,y1_out,z1_out]=getxyzByRadius(z,c,daziN1,r1_out);
figure%% 绘图
surf(x1_in,y1_in,z1_in,'FaceAlpha',0.7,'FaceColor','y')
hold on
surf(x1_out,y1_out,z1_out,'FaceAlpha',0.4,'FaceColor','b')
axis square

%函数
function [x,y,z]=getxyzByRadius(z0,c0,dazi,r);
for i=1:length(z0)
    for j=1:length(dazi)
        x(i,j)=c0(1)+sin(dazi(j))*r(i,j);
        y(i,j)=c0(1)+cos(dazi(j))*r(i,j);
        z(i,j)=z0(i);
    end
end
end



testdata1(1).xlsx

11.58 KB, 下载次数: 0

回复此楼 已获打赏: 0 积分

举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /4 下一条

快速回复 返回顶部 返回列表