请问如何将下列C语言程序改成matlab中的m文件?

作者&投稿:呈露 (若有异议请与网页底部的电邮联系)
请问如何将下列C语言程序改成matlab中的m文件~

for y=20:30
if y==15
x=1;
end
m=15;n=5;x=0;
for i=1:n
set(i)=i;
end
position=n;
while set(1) < m - n + 1
if(set(n)==m)
position=position-1;
else
position =n;
end
set(position)=set(position)+1;
for i=position+1:n
set(i)=set(i-1)+1;
end
if set(5)+set(1)+set(2)+set(3)+set(4)==y
x=x+1;
end
end
disp(['when y= ' num2str(y) ' so you want to look ' num2str(x)]);
end

MATLAB 自带生成 C 语言的功能,只需要在编辑器功能区选择“应用程序”,找到 MATLAB Coder,打开,按照步骤操作即可,如图所示。

但是它可能有诸多限制,有些内置函数无法生成 C 语言,所以如果遇到这种情况你可能需要用 C 自己实现一些功能。

法一:main.m脚本和exchange.m函数

法二:将main定义成函数

对于R2016b以前版本,脚本文件中不能定义函数,因此分为main.m脚本文件和exchange.m函数文件(函数文件名必须和函数名相同)两部分;

对于R2016b及以后的版本,脚本可以定义局部函数,这样可以将exchang.m的内容放在main.m中(必须放在main脚本末尾)

如果main.m定义成函数而不是脚本(一般不会这么做),可以不用分成两个文件,直接将exchange作为main的子函数(放在main函数后面),这时,如果要运行,需要在命令行调用main函数

运行结果

文本代码如下:

[1] main.m 脚本:

disp('请输入四个数字')

number = zeros(1, 4, 'int32');

for ii = 1:4

    number(ii) = input('');

end

number = exchange(number);

disp('修改后的数组为:');

for ii = 1:4

    disp(number(ii));

end

[2] exchang.m 函数

function num = exchange(num)


num(num < 10) = 0;


end

代码流程基本和C语言一样,有三个点不同:

[1] main脚本中的number = exchange(number),因为Matlab没有指针实现,需要用返回值覆盖原数组

[2] exchang函数采用了向量化实现,num(num < 10) = 0表示将num数组中所有小于10的元素置零,如果要贴近C语言的形式,可以用下面的代码:

function num = exchange(num)


for ii = 1:4

    if num(ii) < 10

        num(ii) = 0;

    end


end

[3] 下标变量不能用 i 或者 j 表示,可以用 ii,jj,k,m,n等,这是Matlab的遗留缺陷,i 和 j 本身是个全局变量(而且没有类似const这样的保护),表示单位纯虚数,如果用在循环中被修改值,可能造成不确定的错误计算结果




C语言程序设计该如何入门?
下面是我学学中的一些技巧,洗完对你有帮助: 一。 很多人对学习C语言感到无从下手,经常问我同一个问题:究竟怎样学习C语言?我是一个大学生,已经开发了很多年的程序,和很多刚刚起步的人一样,学习的第一个计算机语言就是C语言。经过这些年的开发,我深深的体会到C语言对于一个程序设计人员多么的重要,如果不懂C...

求问个c语言问题,请问这题应该用怎样的算法
用递归算法。分析如下:第一天:1 第二天:1 第三天:2 = 1+1 第四天:4 = 2+2 第五天:7 = 4+3 第六天:11 = 7+4 第七天:16 = 11+5 ...从第三天起,数量是前一天的数量再加上(天数-2)由此可写出递归算法如下:int getNumber(int day) \/\/day代表第几天 { if (day < ...

C语言由i++和++i引起一道问题的思考,大部分人会做错
i++ 和 ++i 的顺序。综上所述,不同编译器对 C 语言中 i++ 和 ++i 的处理方式存在差异,这解释了为何在不同编译器下执行相同的代码时,结果可能不一致。理解 C 语言中的顺序点和副作用概念,将有助于我们更好地理解这类问题,并在实际编程中做出正确的决策。

想问c语言如何输入矩阵
c语言输入矩阵方法:先自己输入阶数,再输入各个元素。C语言是一门面向过程、抽象化的通用程序设计语言,广泛应用于底层开发。C语言能以简易的方式编译、处理低级存储器。C语言是仅产生少量的机器语言以及不需要任何运行环境支持便能运行的高效率程序设计语言。尽管C语言提供了许多低级处理的功能,但仍然保持...

问个c语言
比如下列情形:b[a*2+d*(c+1)] \/= 10;b[a*2+d*(c+1)] = b[a*2+d*(c+1)] \/ 10;你说那个更好?下面回答你的第二个问题:\/ 在C中叫整除运算符 , 采用的方式是向零取整 ,这样 ,当k是一个个位数时 , 他就会向零取整 , 自然结果是0了 , 明白了吗?希望对你有所帮助...

面试题:有被问到C语言做软件开发时候怎么管理众多的指针,要如何...
C语言是没有“类”这个抽象类型的,所以封装成类这个说法欠妥。我给你讲讲我对指针管理的经验,其实也谈不上什么管理:1,指针在定义时如果没有初始值,就记住赋NULL;系统对NULL这个地址是有保护的,在以后对指针的解引用操作时对NULL值的指针会有错误提示,容易发现,否则发生解引用错误时就是可恨的...

问:在c语言中如何取整数?
如果你需要表示的整数超过了机器所能表示的最大范围,那就需要你自己编写转换程序了。基本思路可以这样做:定义字符串数组,字符串数组可以定义得很长,然后用户输入完后,你可以将输入的字符串转换成数字。而这个过程对用户来说是透明的,用户无需了解你的内部转换机制,他只要在使用中能够得到正确的结果...

萌新问一个c语言问题,老哥们这个程序要怎么改,才能出来的效果是第一...
int main(){ int i,j; for(i=0;i<4;i++) { for(j=0;j

问个C语言的EOF问题啊。。。
EOF 是文件结束符。主要用于文件。不是键盘。键盘产生EOF 与键盘设置和操作系统以及编译器有关。Ctrl Z 组合 也许有效,也许无效。你可以用死循环:while(1){ c=getchar();putchar(c);} 要停时,拍入 Ctrl C 组合 (PC), 或 Ctrl D 组合 (unix) 一次,即可中断程序。书本内容陈旧了。

关于c语言的几道题 想问一下怎么算的
第一题~你再看看,调用函数里和主函数里都有写,输出a的值~当然就会输出2个a的值了 第二题:对角线有2条~第2条右斜向上的条件是i+j=2 因为它们下标是 00,01,02 10,11,12 20,21,22

江城区19774455842: 求大神将下面的c语言改成能在Matlab上运行的!!急!!!急!!! -
苗任盐酸: 程序如下,已经做子函数处理,所以请放在一个m文件中运行:function [] = myhelp() clear; clc; week = ['Monday ';'Tuesday ';'Wednesday';'Thursday ';'Friday ';'Saturday ';'Sunday ']; week = cellstr(week);%printf('Input the date (eg 2013 10 21 , -1 ends...

江城区19774455842: 如何将下面的C语言程序改为C#语言程序?
苗任盐酸: using System; class Program { static void Main(string[] args) { int[,] a = new int[4, 4]; int i, j, sum, sum1, sum2; for (i = 0; i < 4; i++) for (j = 0; j < 4; j++) a[i, j] = Convert.ToInt32(Console.ReadLine()); sum = sum1 = sum2 = 0; for (i = 0; i < 4; i++) { sum1 +...

江城区19774455842: 将c语言改写为MATLAB -
苗任盐酸: matlab 主要使用矩阵,变量是矩阵,运算是矩阵.即使是C语言中的一个简单变量,matlab也要视它为矩阵.C语言程序放入matlab使用:(1)必须改写main(){},把main(){},变成 matlab 入口函数 mexFu...

江城区19774455842: 急求,把下面的代码写成matlab程序代码 -
苗任盐酸: h = 0; u = 0; for i = 1:8 if T(i)||T(i+1)||T(i+2) u = u + 1; if u >= 4 h = h + 1; end end end

江城区19774455842: 如何将c++代码改成matlab -
苗任盐酸: 还有个方法,直接数据拷贝,在matlab中建一个m文件,将拷贝的数据赋予一个变量(可以是二维矩阵)运行后,工作区的该变量即为一个矩阵,可以将该变量保存为.mat文件,当然高级的方法就是用xlsread了

江城区19774455842: C语言程序十进制的数转换成八进制的数 -
苗任盐酸: C语言程序十进制的数转换成八进制的数的办法: #include <stdio.h> #include <math.h> void main() { int n,a,sum = 0,i =0; printf("十进制输出一个数n\n"); scanf("%d",&n); while(n) { a = n%8; n = n/8; sum += a*pow(10,i); i++; } printf("八进制输出sum:%d",sum); }

江城区19774455842: 如何把编写好的C语言接口程序改成可供Matlab调用的MEX函数 -
苗任盐酸: 编写一个C程序先,然后在matlab环境下安装C编译器mbuild -setup选择安装的C编译器 注意matlab自带的lcc不支持汉字(C程序里面不能有汉字) mex C文件名 即可生成matlab可以直接调用的mex文件

江城区19774455842: 将下列C语言代码改为C++代码 -
苗任盐酸: coutnamecoutnamecoutcin>>p1->pname; coutcin>>p1->runtime; coutcin>>p1->arrivetime; 不懂追问! 2013 5 18 15:00

江城区19774455842: 帮我把这个用C写的程序改成matlab语言编写的程序 -
苗任盐酸: 呵呵,看来我们有研究相同的问题吧 matlab是一种科学的计算语言,采用的是解释执行的方式,在配置比较水的机器(比如说我的),运行起来速度不敢恭维,但是他适合工程师用,快速建立起自己的运算平台,很多语法是类似c语言.你可以...

江城区19774455842: 怎样把这个C语言程序改成JAVA运行 -
苗任盐酸: public class Test{ public staitc void main(String args){ int i,j,k=3; for(i=0;i<4;k=k-1-i,i++) { for(j=0;j<4+i;j++) { if(j System.out.print(" "); else { System.out.print("*"); j++; } } } k=3; } } 保存为Test.java,然后运行javac Test.java和java Test就可以运行了..

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网