1、首先找到matlab2014b的上方“预设”按钮,左键点击。
matlab输出语句_matlab输出语句print
matlab输出语句_matlab输出语句print
matlab输出语句_matlab输出语句print
3、“仿宋”字体及后面的字体都可以正常显示汉字,选择仿宋字体。
4、选择后记得“确定”。
5、发现MATLAB可以输出汉字了。
如果你是问fsolve求解0值方程的用法,是这样:
Part-4. matlab符号运算[输出变量列表,逗号分隔]=fsolve(函数句柄,[参数初值列表,逗号分隔],选项参数)
对照你写的语句:
[x,fl]=fsolve(@(x)cos(0.5x)cosh(0.5x)+1,6)
你写的表达式中fsolve参数中的@句是匿名方式声明函数:
函数名 =@(变量列表)表达式
所以原句相当于在求解x0=6附近cos(0.5x)cosh(0.5x)+1=0的解
实际不用;号结尾这一句在COMMAND下直接就可解出:
x = 3.7502 =>最近的解点
fl = -1.3868e-07 =>解点的函数值,很接近于0了哦。fsolve是数值解法。
要求解9附近的根和误:
[x,fl]=fsolve(@(x)cos(0.5x)cosh(0.5x)+1,9)
x = 9.3882
fl = 2.4299e-09
至于怎样为函数定义多个输入参数。。。。自己去随便搜点基础教程都有的。
看帮助也行阿,搜function declare arguments,个结果应该就是了
声明语法:
Declare function
Syntax
function [out1, out2, ...] = myfun(in1, in2, ...)
根据指定类型读取规定长度的字节,然后解析成指定类型的数字。
“fread”以二进制形式,从文件读出数据。
语法1:[a,count]=fread(fid,size,precision)
语法2:[a,count]=fread(fid,size,precision,skip)
matlab 的precision(精度)的表达式与c语言、fortran语言、是一致的。
不规定precision(精度),则字符默认为: ucher、则数值默认为双精度 。
1.计算:y=1+x+x2/2!+x3/3!+……+x^n/n!
afile.txt打开之后,是这样的:%计算一个阶乘公式
clear;
clc;
n=input('n=');
x=input('x=');
if n==0
y=1;
else
y=1;
f=1;
for i=1:n
for j=1:i
f=fj;
y=y+x^i/f;
disp(y);
为了针对n=0的情况,我选择的是使用if语句把特殊情况分立出来。
2.编写程序求一元二次方程ax2+bx+c=0的根,要求能由用户输入a,b,c的值,由程序完成计算并输出结果x1和x2。(不考虑方程无解的情况)
clear;
clc;
a=input('a=');
b=input('b=');
c=input('c=');
syms x;
eqn=ax^2+bx+c==0;
x=solve(eqn,x);
disp(x);
3.从键盘中输入一个5位整数,按如下规则加密后输出:每位数字都加上9,然后用和除以10的余数取代该数字;再把位与第五位交换,第二位与第四位交换。
clear;
clc;
x=input('请输入一个五位整数:');%输入一个数
a=fix(x/10000)+9;
b=fix((x-a10000)/1000);
c=fix((x-a10000-b1000)/100);
d=fix((x-a10000-b1000-c100)/10);
e=x-a10000-b1000-c100-10d;%把五个数全部提取出来
a=mod(a+9,10);
b=mod(b+9,10);
c=mod(c+9,10);
d=mod(d+9,10);
e=mod(e+9,10);%求出余数
y=e10000+d1000+c100+d10+a;%进行换位后组合
disp(y);
mod是用于计算余数。用法是mod(a,b);a是被除数,b是除数。
用hold on命令,例如:
t=linspace(0,2pp=p(z-x0(j))/(x0(k)-x0(j));i,50);
plot(t,sin(t))
hold on
plot(t,cos(t),'r:')另外,plot命令自身也支持一次绘制多条曲线,例如:
t=linspace(0,2A=[D(i-1,j),D(i,j-1),D(i,j+1),D(i+1,j)];pi,50);
plot(t,sin(t),t,cos(t),'r:')还可以把数据组合成矩阵之后绘图:
t=linspace(0,2pi,50);
plot(t,[sin(t);cos(t)])
你好总结网上各种资源,列出以下的四种方法(以txt为例)。
种方法:se(最简单基本的)
具体的命令是:用se .txt -ascii x
x为变量
.txt为文件名,该文件存储于当前工作目录下,再打开就可以 打开后,数据有可能是以指数形式保存的.
例子:
a =[17 24 1 8 15;23 5 7 14 16 ;4 6 13 20 22 ;10 12 19 21 3 ;11 18 25 2 9 ];
se afile.txt -ascii a; %保存文本文档的文件名
1.7000000e+001 2.4000000e+001 1.0000000e+000 8.0000000e+000 1.5000000e+001
2.3000000e+001 5.0000000e+000 7.0000000e+000 1.4000000e+001 1.6000000e+001
4.0000000e+000 6.0000000e+000 1.3000000e+001 2.0000000e+001 2.2000000e+001
1.0000000e+001 1.2000000e+001 1.9000000e+001 2.1000000e+001 3.0000000e+000
1.1000000e+001 1.8000000e+001 2.5000000e+001 2.0000000e+000 9.0000000e+000
遇到的问题:
Warning: Attempt to write an unsupported data type to an ASCII file.
Variable 'names' not written to file
第二种方法:dlmwrite
dlmwrite('a.txt',a,'precision','%10.0f')
或者是dlmwrite('a.txt',a,'delimiter', 't')
对于只有一行或者一列的数据,很适用,但是多行的,就乱了
网上有很多这一类似的问题,但是都不是很理想
第三种方法:fopen+fprintf(最常用)
下面主要介绍这种方法,由以下的前两种情况最终导出第三种情况可以完美的解决以上问题。以上面的例子为例:
种情况:
>> a=[17 24 1 8 15;23 5 7 14 16 ;4 6 13 20 22 ;10 12 19 21 3 ;11 18 25 2 9 ];
>> fid = fopen('b.txt','wt');
fprintf(fid,'%g
',a);
换行
fclose(fid);
然后用写字板打开b.txt,内容如下:为列向量
23
410
11
24
56
12
18
13
19
814
20
21
215
16
22
39
第二种情况:
对上面的命令做一下改动:
换行改为t,table键
>> fid = fopen('b.txt','w');
fprintf(fid,'%gt',a);
fclose(fid);
然后用写字板打开b.txt,内容如下:为行向量:
17 23 4 10 11 24 5 6 12 18 1 7 13 19 25 8 14 20 21 2 15 16 22 3 9
第三种情况:(最终程序)
综合上面的两个情况,我们编写以下命令:
fid=fopen('b.txt','wt'); %写入的文件,各函数后面有说明
[m,n]=size(a);
for i=1:1:m
for j=1:1:n
if j==n
fprintf(fid,'%g
',a(i,j));
else
fprintf(fid,'%gt',a(i,j));
fclose(fid);
然后用写字板打开b.txt,内容如下:矩阵
17 24 1 8 15
23 5 7 14 16
4 6 13 20 22
10 12 19 21 3
11 18 25 2 9
说明:以上作都是在当前的工作目录下完成!下面给出最一般的模型,大家可以试着自己作,如果需要dat格式,直接把txt换为dat就可以:
fid=fopen('C:Documents and SettingsTname.txt','wt');%写入文件路径
matrix=input_mattrix %input_matrix为待输出矩阵
[m,n]=size(matrix);
for i=1:1:m
for j=1:1:n
if j==n
fprintf(fid,'%g
',matrix(i,j));
else
fprintf(fid,'%gt',matrix(i,j));
fclose(fid);
×××××××××××××××××××××××××××××××××××××××××××××××××××××××××
下面附了具体的matlab的fopen和fprintf函数具体解释,当然一下是可以知道的,只是为了方便大家
matlab中fopen函数在指定文件打开的实例如下:
1)“fopen”打开文件,赋予文件代号。
语法1:FID= FOPEN(filename,permission)
用指定的方式打开文件
FID=+N(N是正整数):表示文件打开成功,文件代号是N.
FID=-1 : 表示文件打开不成功。
FID在此次文件关闭前总是有效的。
如以读方式打开,matlab首先搜索工作目录,其次搜索matlab的其他目录,“permission”是打开方式参数。
打开方式参数由以下字符串确定:
r 读出
w 写入(文件若不存在,自动创建)
a 后续写入(文件若不存在,自动创建)
r+ 读出和写入(文件应已存在)
w+ 重新刷新写入,(文件若不存在,自动创建)
a+ 后续写入(文件若不存在,自动创建))
w 重新写入,但不自动刷新
a 后续写入,但不自动刷新
文件的存储格式:文件打开的默认方式是:二进制。以文本方式打开,可以在方式参
数“permission”中加入“t”文件将,如“rt”,“wt+”
matlab中fprintf函数的具体使用方法实例如下:
fprintf函数可以将数据按指定格式写入到文本文件中。其调用格式为:
数据的格式化输出:fprintf(fid, format, variables)
按指定的格式将变量的值输出到屏幕或指定文件
fid为文件句柄,若缺省,则输出到屏幕
1 for standard output (the screen) or 2 for standard error. If FID is omitted, output goes to the screen.
format用来指定数据输出时采用的格式
%e 实数:科学计算法形式
%f 实数:小数形式
%g 由系统自动选取上述两种格式之一
%s 输出字符串
fprintf(fid,format,A)
说明:fid为文件句柄,指定要写入数据的文件,format是用来控制所写数据格式的格式符,与fscanf函数相同,A是用来存放数据的矩阵。
例6.9 创建一个字符矩阵并存入磁盘,再读出赋值给另一个矩阵。
>> a='string';
>> fid=fopen('d:char1.txt','w');
>> fprintf(fid,'%s',a);
>> fclose(fid);
>> fid1=fopen('d:char1.txt','rt');
>> fid1=fopen('d:char1.txt','rt');
>> b=fscanf(fid1,'%s')
b =
string
matlab读txt文件
fid=fopen('fx.txt','r');
%得到文件号
[f,count]=fscanf(fid,'%f %f',[12,90]);
%把文件号1的数据读到f中。其中f是[12 90]的矩阵
%这里'%f %f'表示读取数据的形势,他是按原始数据型读出
fclose(fid);
%关闭文件
另外有的txt文件还可以用load来打开
其语句为
f=load('fx.txt)
1. 函数eval可以用来执行用字符串表示的表达式
2. 函数deblank可以去掉字符串末尾的所有空格
4. 函数isstr可以用来判断变量是否为字符串
5. 函数isletter可以用来判断字符串中各个元素是否为字母
6. 函数isspace可以用来判断字符串元素是否为空格符
7. 函数lower和upper可以把字符串中的字母转为小写格式和大写格式
8. 函数strcat可以把多个字符串在水平方向上依次连接起来
9. 函数strvcat可以把多个字符串按竖直方向连接起来
10. 函数strcmp可以用来进行字符串的比较,返回1或0
11. 函数strcmpi可以用来忽略英文字母的大小写方式end比较字符串
12. 函数strncmp可以用来比较字符串前N个字符是否相同
13. 函数strjust可以用来调整字符串矩阵的对齐方式
14. 函数strmatch可以用来寻找和目标字符串匹配的行
15. 函数strrep可以实现字符串的查找和替代功能
16. 函数strtok可以找出字符串个空格符前的字符串
18. 不同进制间的转换,bin2hex,bin2dec(‘字符串’);dec2hex(数)=字符串;即十进制数不为字符串, 其它进制为字符串
19. 函数bitget可以用来获取二进制的数位 C=bitget(A,bit),A为一个无符号整形数据
20. 函数bitset可以用来设定某个二进制数位的值 C=bitset(A,bit) 指定数位的数值取反
C=bitset(A,bit,V)指定数位的数值被V替换
第四种方法:(数据少了可以)
是一个5×5矩阵
17 24 1 8 15
23 5 7 14 16
4 6 13 20 22
10 12 19 21 3
11 18 25 2 9
fid=fopen('Tname.txt','wt') ;
fprintf(fid,'%8.4f%8.4f%8.4f %8.4f %8.4f
',a') %输出矩阵
fclose(fid) %关闭文件
讲一下fprintf命令中每一项的含义:
fid 函数句柄,代表之前打开的文件
'%8.4f %8.3f %6.2f
' 输出格式,具体如下:
1、%8.4f 表示输出格式为浮点数,占用8位(含小数点),保留4位小数
2、如果是其他%8.3f %6.2f则意义同1
3、
表示换行
4、在换行符前给出三个不同的输出格式表示每行输出三个数据(当然,三个格式可以一样,只不过要想每行输出三个数据必须写三次),也就是说,换行符前些几次输出格式,每行就输出几个数据。
————————————————
版权声明:本文为CSDN博主「qing101hua」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:
A = [3 4
z=x(i);7 4
14 3
31 3
45 3
52 4
56 3
76 8
93 4
102 6
122 4
131 5
136 9
146 4
150 13
165 8
187 5
195 3
202 5
208 5
214 3];
A(:,3) = A(:,1)+A(:,2)-1;
mh = repmat(':',size(A,1),1);
S = [num2str(A(:,1)) mh num2str(A(:,3))];
R = arrayfun(@(m) eval(S(m,:)),1:size(S,1),'un',false);
RR = cell2mat(R) Columns 1 through 21
3 4 5 6 7 8 9 10 14 15 16 31 32 33 45 46 47 52 53 54 55
Columns 22 through 42
56 57 58 76 77 78 79 80 81 82 83 93 94 95 96 102 103 104 105 106 107
Columns 43 through 63
Columns 64 through 84
149 150 151 152 153 154 155 156 157 158 159 160 161 162 165 166 167 168 169 170 171
Columns 85 through 105
172 175 176 177 178 179 180 181 187 188 189 190 1 195 196 197 202 203 204 205 206
Columns 106 through 113
208 209 210 211 212 214 215 216
是由数值运算误导致的。
例如,题主不妨在循环体中设置输出p-9.2的值,会发现,当本来应该p==9.2的时候,p-9.2却是类似1.7764e-015这样的数,用“==”判断相等当然是不成立的。
在任何编程语言中,对浮点数进行直接判断相等都是不安全的,一般来说更可取的是用abs(p-p1)<=tol的做法(tol为某个很小的数,即允许的误),例如:
p1 = [1 3.2 5 5.8 6.5 8.1 9.2];
for p=1:0.1:10;
i122 123 124 125 131 132 133 134 135 136 137 138 139 140 141 142 143 144 146 147 148f any(abs(p-p1)<1e-10)
pend
版权声明:本文内容由互联。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发 836084111@qq.com 邮箱删除。