楼主: wangzt
4691 16

Matlab的一些小问题,有金币送(不断更新) [推广有奖]

  • 5关注
  • 7粉丝

贵宾

院士

42%

还不是VIP/贵宾

-

威望
4
论坛币
147766579 个
通用积分
0.0214
学术水平
2 点
热心指数
6 点
信用等级
5 点
经验
39141 点
帖子
1017
精华
0
在线时间
3137 小时
注册时间
2007-12-10
最后登录
2024-4-26

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

下面是我在学习过程中遇到的一些小问题,有些可能是非常简单的,属于比较弱智的类型,如果你碰巧知道,希望不吝赐教!根据我想知道的急切程度,每个小问题都标有一定数量的金币。任何有价值的提示也会奖励一些金币表示感谢(1金币=100论坛币)

要查看已解决的问题点这里

8、能解自定义函数的方程吗? (15金币)
现在已定义函数y
---------------y.m------------
function y=y(x)
% Y.m file : Generate y from x
x=x(:);
y=x.^2;
return
------------------------------
已知在y0=[1,2,3,4,5]
现在要求y(x)=y0的解x0,我该怎么做?
9、一些矩阵元素的操作。(15金币)
(1)去除集合中所以小于0的元素,构成所以大于0的集合。比如A=[1,-3,2,-6],去除小于0的元素后生成集合A1=[1,2]
(2)在已知集合中加入某一元素。并指定加入的位置。首先加在最前面,然后加在最后面。
(3)如何让一集合中的元素从小到大排列?
10、求基尼系数的计算程序,任给定一组数据,计算出其基尼系数!(25金币)一年前我用过的,不过好像是eview的,而且现在找不到了,觉得应该是个比较常用的工具,用matlab写的)


[此贴子已经被作者于2008-1-13 10:58:31编辑过]

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:MATLAB matla atlab Mat Atl MATLAB 金币

沙发
Xaero 发表于 2007-12-28 23:29:00 |只看作者 |坛友微信交流群
Xaero's Solution:
1-1:
第二种做法是错误的,
syms a b x
%这句表示a b x 被声明为符号变量
a=1;
%表示 a在此被赋值为1, 注意不再是符号变量了!!!
[x]=solve('a*x+b',x);
%这样解可以解出来, 原因是用上引号后, 引号中的 a b x字符都被当作符号变量来做,
[x]=solve(a*x+b,x);
%这个里面的式子中 a是1, b喝x是符号变量,
1-2:
这里的正确做法是: subs(x,a,1)

2-1:
如果你用的是Matlab自带的mEditor 来编辑程序, 那么直接按 F5键就可以运行了.
十年一觉扬州梦。
智不足以Academy,才尚不够Industry,情无力于Life。

使用道具

藤椅
confch 发表于 2007-12-28 23:53:00 |只看作者 |坛友微信交流群

clear all
syms a b x
[x]=solve('a*x+b',x);

%此处加引号与语句 x = solve(a*x+b,x)一样,因为你已经声明a,b,x为变量了.

%结果变量x=-b/a.

%也可以用语句 x = solve('a*x+b','x'),此语句结果只产生变量x。

a=1; %此赋值语句使变量a为1,a即为一数值变量。

x    %x为符号变量值为-b/a,上一对a的赋值语句x没有影响。

第二
clear all
syms a b x   %声明a,b,x为符号变量
a=1;         %a已为数值变量值为1,b,x仍为符号变量
[x]=solve('a*x+b',x);

%加引号是解符号表达式ax+b=0,结果x=-b/a;

%去掉引号后,因a=1,故解方程x+b=0,结果x=-b
x

如果既要解的表达式,又要a=l时的解,一种方法是用替换命令subs

>>x = solve('a*x+b','x')

>>xa = subs(xa,'a',1)

M文件的运行:

如果是脚步文件,快捷件是F5,当然也可以用鼠标了。

如果是函数问题,因为要有输入变量值,一般是在MATLAB的命令窗口里面调用的。

[此贴子已经被作者于2007-12-28 23:53:56编辑过]

使用道具

板凳
wangzt 发表于 2007-12-29 01:01:00 |只看作者 |坛友微信交流群

问题1、2已解决,谢谢Xaero,confch

[此贴子已经被作者于2007-12-29 1:29:53编辑过]

使用道具

报纸
Xaero 发表于 2007-12-29 09:35:00 |只看作者 |坛友微信交流群
3-1,
你之所以会出现这个问题, 是因为 eq2=y 这个式子太简单了, 计算机不知道你想把 eq2定义成一个 符号变量 还是一个 符号表达式, 只要把这个式子复杂一下就可以了, 或者把 eq1 , eq2的定义换一下:
eq2=x+y-1;
eq1=y;
搞定
4-1:
MATLAB 语言的赋值语句有两种:
变量名 = 运算表达式
[返回变量列表] = 函数名(输入变量列表)
所以要直接赋值多个变量组成的列表应该只能在函数的返回值列表中直接赋值, 而不能对运算表达式赋值.
(To be revised)
5-1:
axis([0,1,0,1])
十年一觉扬州梦。
智不足以Academy,才尚不够Industry,情无力于Life。

使用道具

地板
aris_zzy 发表于 2007-12-30 10:43:00 |只看作者 |坛友微信交流群
4、现在有矩阵A=[1,2],我想将A的第一个元素赋值给x1,A的第二个元素赋值给x2,我只能一个一个的弄吗?比如x1=A(1);x2=A(2),我能一次给这两个变量赋值吗?比如[x1,x2]=A,但我如果这样做的话matlab里会提示出错,有没有什么办法解决。(4金币)

无法解决,[x,y]=A, matlab的语法要有普适性,“[x,y]=A”matlab的编译器不知道A的那几个元素给x,那几个给y.

还有x1=A(1);x2=A(2),我觉得本身就没有意义, 参数可以存在中数组,只要调用的时候知道调用的是数组参数中的哪个就行了

http://www.ariszheng.com

使用道具

7
Xaero 发表于 2008-1-5 14:17:00 |只看作者 |坛友微信交流群

Xaero's Solution
==========Problem 6 =========
Main:
----------------
in matlab command window:
---------------
h=[1/4,2/4,3/4]; 
hh=[1/3,2/3]; 
dx=0.005; 
x=[dx:dx:1-dx];
y_1=y1(x);
y_2=y2(y_1,x,h);
y_3=y3(y_2,x,hh);
plot(x,y_1,'r',x,y_2,'g',x,y_3,'b');
---------------y1.m------------
function y1=y1(x)
% Y1.m file : Generate y1 from x
x=x(:);
y1=x.^2;
return

----------y2.m----------------
function y2=y2(y1,x,h)
% Generate y2 from y1, using vector h as the separating ticks.
y1=y1(:); h=h(:); x=x(:);
y2=y1+1;
for a=1:length(h)
 y2=y2+(x>=h(a));
end

---------y3.m--------------
function y3=y3(y2,x,hh)
%Generate y3 from y1....
y2=y2(:); x=x(:); hh=hh(:);
idx=2*ones(size(y2));
for a=1:length(hh)
 idx=idx+(x>=hh(a));
end
y3=y2./idx;

=============Problem 7=========
%PS:那两条线是不是没写清楚, 这么简单????
h=[20,3,2008];
a='我的';
b='生日';
x=0:0.01:3;
%y=x.^2;
xx=[1,2];
hFig=figure('Name',['我的生日是',num2str(h(3)),'年',num2str(h(2)),'月',num2str(20),'日']);
set(get(hFig,'Children'),'YTicklabel',[1,2],'XTicklabel',[1,4])
hold on;
%用实线画:(0,y(x=1))-(1,y(x=1))-(1,0) , 用虚线画:(0,y(x=2))-(2,y(x=2))-(2,0)
plot([0,1,1],[1,1,0],'-',[0,2,2],[2^2,2^2,0],'--'),
plot([1,2],[1,4],'.','Markersize',5)
%标注点:(1,y(x=1))和(2,y(x=2))
set(get(hFig,'Children'),'XTick',[1,2],'YTick',[1,4])
%在纵轴上显示:“1”和“4”
%在横轴上显示:“1”和“2”

十年一觉扬州梦。
智不足以Academy,才尚不够Industry,情无力于Life。

使用道具

8
wangzt 发表于 2008-1-6 06:00:00 |只看作者 |坛友微信交流群

Xaer谢谢你,你太强了!

P7已经帮了我大忙了,我的确没有表达清楚,我的想法还要稍微复杂一点点,x的取值是可以变动的,这样我会得到不同的点的标记和不同的辅助线!题目已经改过来了。!

[此贴子已经被作者于2008-1-6 8:55:57编辑过]

使用道具

9
aris_zzy 发表于 2008-1-6 09:31:00 |只看作者 |坛友微信交流群
8、Matlab的m文件写的程序可不可以调用子程序?子程序产生的变量,或参数能够在主程序中用吗?比如我要运行下面的程序.我这样做是想把所有的参数定义到一个m文件中。(8金币)
主程序:
x=1
运行子程序:sub1.m
z=x+y

子程序sub1.m:
y=x+1

可以,matlab,m文本程序的使用方法

1.command window的 程序的批处理  变量的改变会存在 matlab变量库中

2.编写function   function要有出入 或者 输出  但是函数中的变量在函数运行结束 中间变量是不保存的

http://www.ariszheng.com

使用道具

10
aris_zzy 发表于 2008-1-6 09:32:00 |只看作者 |坛友微信交流群
你对问,我们多大,估计能成个 matlab问答集
http://www.ariszheng.com

使用道具

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

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-5-2 02:18