查看: 771|回复: 16|关注: 0

[已解决] 我根据公式利用matlab出了一个三维图,但是我需要其中一个z的值对应的所有xy的值,想把这些xy的数据提取处出来。求求各位大神帮帮忙。。。

[复制链接]

新手

7 麦片

财富积分


050


1

主题

10

帖子

0

最佳答案
各位大佬,我出的三维图就是图片那样,但是由于是公式出的,所以没有数据,我需要那些数据进行后续的处理,求大神帮忙啊。这个要怎么搞呢

捕获.PNG
回复主题 已获打赏: 0 积分

举报

论坛优秀回答者

5

主题

2605

帖子

800

最佳答案
  • 关注者: 219
发表于 2020-9-2 13:45:48 | 显示全部楼层
打开帮助文档,读一下find函数的语法和示例就是了
提问请:①准确描述问题②提出你的思考(等着抄作业的一律锁帖)③提供代码文本而非截图④及时反馈
回复此楼 已获打赏: 0 积分

举报

新手

7 麦片

财富积分


050


1

主题

10

帖子

0

最佳答案
 楼主| 发表于 2020-9-2 16:22:08 | 显示全部楼层
TouAkira 发表于 2020-9-2 13:45
打开帮助文档,读一下find函数的语法和示例就是了

你好,我看了那个函数了,但是不知道具体怎么用?能麻烦你简单说一下嘛?谢谢了
回复此楼 已获打赏: 0 积分

举报

论坛优秀回答者

5

主题

2605

帖子

800

最佳答案
  • 关注者: 219
发表于 2020-9-5 10:16:31 | 显示全部楼层
gz130 发表于 2020-9-2 04:22
你好,我看了那个函数了,但是不知道具体怎么用?能麻烦你简单说一下嘛?谢谢了
...

照着帮助文档里面
Elements Satisfying Multiple Conditions

Find the first three elements in a 4-by-4 matrix that are greater than 0 and less than 10. Specify two outputs to return the row and column subscripts to the elements.

X = [18 3 1 11; 8 10 11 3; 9 14 6 1; 4 3 15 21]

X = 4×4

    18     3     1    11
     8    10    11     3
     9    14     6     1
     4     3    15    21

[row,col] = find(X>0 & X<10,3)

row = 3×1

     2
     3
     4

col = 3×1

     1
     1
     1

The first instance is X(2,1), which is 8.

这个示例做就行了啊,你总得自己先把代码写出来试试啊,照猫画虎哪怕仍然有问题,也可以具体问题具体分析,光说一句不知道怎么用,这种不具体的问题谁也没辙。

然后提一句,有问题,欢迎问,直接在原帖上修改就行了,请不要额外开新帖子;置顶反复讲了,请把代码文本发出来,请不要光发截图——截图根本没法让他人复现你的问题。
提问请:①准确描述问题②提出你的思考(等着抄作业的一律锁帖)③提供代码文本而非截图④及时反馈
回复此楼 已获打赏: 0 积分

举报

新手

7 麦片

财富积分


050


1

主题

10

帖子

0

最佳答案
 楼主| 发表于 2020-9-5 10:35:18 | 显示全部楼层
TouAkira 发表于 2020-9-5 10:16
照着帮助文档里面

这个示例做就行了啊,你总得自己先把代码写出来试试啊,照猫画虎哪怕仍然有问题,也可 ...

谢谢你的提醒,是我不对啦,抱歉,这是我的源程序
x=0.015:0.0009:0.06;
y=0.005:0.0001:0.01;
[X,Y]=meshgrid(x,y);
A=0.0000045.*(X+Y)./(X.^3.*Y.^3);
B=((0.252-X).^2+13.51).^0.5;
C=(1020./(X+Y)).^0.25;
Z=(A./C).*sqrt(B);
surf(X,Y,Z);

我试过了,但是每次出来的都不对。。。
回复此楼 已获打赏: 0 积分

举报

论坛优秀回答者

5

主题

2605

帖子

800

最佳答案
  • 关注者: 219
发表于 2020-9-5 10:46:04 | 显示全部楼层
gz130 发表于 2020-9-4 22:35
谢谢你的提醒,是我不对啦,抱歉,这是我的源程序
x=0.015:0.0009:0.06;
y=0.005:0.0001:0.01;

唉,朋友,提问需要越具体越好,你标题就说了“我需要其中一个z的值对应的所有xy的值”目的,结果到现在,除了你自己,别人都不知道你要找什么样的Z目标值及其对应的xy值,这堪比迷路后“我要回家”结果问路问了半天却没说清地址。

你试过了,就请把你试的代码发出来,不要“每次都不对”就不提了。

去医院看病也得做血检尿检之类的测试吧,不能光远程跟医生讲“我不舒服”然后就等着拿药方吧?
提问请:①准确描述问题②提出你的思考(等着抄作业的一律锁帖)③提供代码文本而非截图④及时反馈
回复此楼 已获打赏: 0 积分

举报

新手

7 麦片

财富积分


050


1

主题

10

帖子

0

最佳答案
 楼主| 发表于 2020-9-5 11:05:38 | 显示全部楼层
TouAkira 发表于 2020-9-5 10:46
唉,朋友,提问需要越具体越好,你标题就说了“我需要其中一个z的值对应的所有xy的值”目的,结果到现在 ...

我不知道怎么用那个find函数,因为我的程序是由公式得到的三维图。我最终目的就是找到z=1x10^4的时候,x,y分别是多少。不需要很精确,有几十个数据就行。能麻烦你告诉我一下,这几条程序怎么编吗?
回复此楼 已获打赏: 0 积分

举报

论坛优秀回答者

5

主题

2605

帖子

800

最佳答案
  • 关注者: 219
发表于 2020-9-5 12:21:34 | 显示全部楼层
gz130 发表于 2020-9-4 23:05
我不知道怎么用那个find函数,因为我的程序是由公式得到的三维图。我最终目的就是找到z=1x10^4的时候,x ...

看四楼引用的find函数的示例啊,示例找的是X矩阵中符合要求的元素的行号及列号,在这个基础上改改就匹配你的寻找矩阵中特定Z值的要求了啊。

直接告诉你代码很简单,比试图引导你通过自学努力完成目标打这么多字花的时间还少,结果苦口婆心说了这么多,你一个调用find函数的代码字符都没写,光反复地讲“不会”...
提问请:①准确描述问题②提出你的思考(等着抄作业的一律锁帖)③提供代码文本而非截图④及时反馈
回复此楼 已获打赏: 0 积分

举报

新手

7 麦片

财富积分


050


1

主题

10

帖子

0

最佳答案
 楼主| 发表于 2020-9-5 15:10:54 | 显示全部楼层
TouAkira 发表于 2020-9-5 12:21
看四楼引用的find函数的示例啊,示例找的是X矩阵中符合要求的元素的行号及列号,在这个基础上改改就匹配 ...

x=0.015:0.0009:0.06;
y=0.005:0.0001:0.01;
[X,Y]=meshgrid(x,y);
A=0.0000045.*(X+Y)./(X.^3.*Y.^3);
B=((0.252-X).^2+13.51).^0.5;
C=(1020./(X+Y)).^0.25;
Z=(A./C).*sqrt(B);
[X1,Y1] = find(Z==1.*10.^4);
单纯的这种不正确啊。。。不好意思啊,我对matlab懂得太少。所以不知道该怎么修改
回复此楼 已获打赏: 0 积分

举报

论坛优秀回答者

5

主题

2605

帖子

800

最佳答案
  • 关注者: 219
发表于 2020-9-6 07:02:55 | 显示全部楼层
gz130 发表于 2020-9-5 03:10
x=0.015:0.0009:0.06;
y=0.005:0.0001:0.01;
[X,Y]=meshgrid(x,y);

这样写,代码本身没问题啊,但是你得思考啊。就按上面四楼给的那些代码,你先换个数值尝试,比如
  1. X = [18 3 1 11; 8 10 11 3; 9 14 6 1; 4 3 15 21];
  2. [row,col] = find( X == 2 )
复制代码

这样的效果,就跟你运行你的代码中 [ X1, Y1 ] = find( Z == 1.*10.^4 ) 这句后,效果一样啊。然后看看X矩阵,里面根本就没有2,非要设定找 X == 2 这样的条件,所以得到的row,col都是空集啊。而按照示例给的较为宽泛条件,就能得到满足条件的索引值。

你的代码得到的X1和Y1也都是空集,这不就说明了,你给的条件下,没有任何一个Z值正好等于你给的数值么。要么就只能如实说,确实没有;要么就扩宽条件,比如 比0.8*10^4大,且比1.2*10^4小 。

返回去再看上面提到的find函数自带的示例,它给出的条件就是X比0大,且比10小,只取前三个同时满足这两个条件的。你在这个示例基础上改改完全可以达到上面说的“扩宽”之后的条件啊。找到符合的行号、列号之后,X, Y, Z矩阵都是一一对应的,按照行号、列号查对应的坐标值就可以了啊。

MATLAB一直是一个工具,把示例代码复制粘贴到自己电脑里面测试,然后再在示例代码的基础上一点儿一点儿修改并比对结果,这是最方便最直观的学习方式了。

提问请:①准确描述问题②提出你的思考(等着抄作业的一律锁帖)③提供代码文本而非截图④及时反馈
回复此楼 已获打赏: 0 积分

举报

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

本版积分规则

关闭

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

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