Matlab怎么转成C语句的,求解答,不能把程序放到下面,我就截图了,看起来不太方便,希望有大佬指导,谢谢啦

涵啊 2018-10-10 03:12:28
...全文
153 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2018-11-07
  • 打赏
  • 举报
回复
不要做A语言代码修改为B语言代码的无用功。
也不要做用A语言代码直接调用B语言代码库这样复杂、这样容易出错的傻事。
只需让A、B语言代码的输入输出重定向到文本文件,或修改A、B语言代码让其通过文本文件输入输出。
即可很方便地让A、B两种语言之间协调工作。
比如:
A将请求数据写到文件a.txt,写完后改名为aa.txt
B发现aa.txt存在时,读取其内容,调用相应功能,将结果写到文件b.txt,写完后删除aa.txt,再将b.txt改名为bb.txt
A发现bb.txt存在时,读取其内容,读完后删除bb.txt
以上A可以替换为任何一种开发语言或开发环境,B可以替换为任何一种与A不同的开发语言或开发环境。
除非A或B不支持判断文件是否存在、文件读写和文件更名。
但是谁又能举出不支持判断文件是否存在、文件读写和文件更名的开发语言或开发环境呢?
可以将临时文件放在RamDisk上提高效率减少磨损磁盘。
数据的结构很复杂的话,文本文件的格式问题可参考json或xml

共享临时文本文件这种进程之间的通讯方法相比其它方法的优点有很多,下面仅列出我现在能想到的:
·进程之间松耦合
·进程可在同一台机器上,也可跨机,跨操作系统,跨硬件平台,甚至跨国。
·方便调试和监视,只需让第三方或人工查看该临时文本文件即可。
·方便在线开关服务,只需删除或创建该临时文本文件即可。
·方便实现分布式和负载均衡。
·方便队列化提供服务,而且几乎不可能发生队列满的情况(除非硬盘空间满)
·……

“跨语言、跨机,跨操作系统,跨硬件平台,跨国,跨*.*的”苦海无边,
回头是“使用共享纯文本文件进行信息交流”的岸!
测试NULL 2018-11-06
  • 打赏
  • 举报
回复
如果自己手动写个C版本的话,这个很麻烦,不过可以直接用命令转成C语言的,你可以参考: https://blog.csdn.net/zzlzzh/article/details/45044905 或者: https://blog.csdn.net/zyqdragon/article/details/71512790
涵啊 2018-10-10
  • 打赏
  • 举报
回复
Matlab to C( or other ) function satpos = get_satpos(t,sv,eph); % get_satpos 用来确定卫星的位置, % t为给出的接收机记录的卫星接收信号的时刻,是当前gps周的秒数 % sv 为卫星编码 % eph 为从nav file(*.yrN)读出来的卫星的定位信息 % 万有引力常数 GM = 3.986004418e14; % 地球自转 , rad/s Omegae_dot = 7.2921151467e-5; % 选出指定卫星的信息,既是指定卫星在所有时刻的定位信息 col = find(eph(1,:)==sv); eph = eph(:,col); % 选定离时刻t最近的参考历元 [y,col] = min(abs(t-eph(18,:))); % 选定指定卫星在离参考时刻最近的定位信息所在的列, eph = eph(:,col); % read ephemerides svprn = eph(1); af2 = eph(2); M0 = eph(3); roota = eph(4); deltan = eph(5); ecc = eph(6); omega0 = eph(7); cuc = eph(8); cus = eph(9); crc = eph(10); crs = eph(11); i0 = eph(12); idot = eph(13); cic = eph(14); cis = eph(15); Omega0 = eph(16); Omegadot= eph(17); toe = eph(18); af0 = eph(19); af1 = eph(20); toc = eph(21); %%%%%%%%% 开始计算卫星的位置 %%%%%%%%%% %A为轨道长半轴 A = roota*roota; %计算到参考历元的时间差 tk = t - toe; % 计算t时刻的平近点角 M = M0 + (sqrt(GM/A^3)+deltan)*tk; % 利用开普勒公式迭代求解偏近点角 E_old = M; dE = 1; while (dE > 1e-12) E = M + ecc*sin(E_old); dE = abs(E-E_old); E_old=E; end % 计算真近点角 v = atan2(sqrt(1-ecc^2)*sin(E), cos(E)-ecc); %计算改正后的升交点经度 Omega = Omega0 + (Omegadot-Omegae_dot)*tk - Omegae_dot*toe; phi = omega0 + v; phi = rem(phi,2*pi); % 计算升角角距 omega = omega0 + cuc*cos(2*phi) + cus*sin(2*phi); % 计算向径 r = A*(1-ecc*cos(E)) + crc*cos(2*phi) + crs*sin(2*phi); %计算倾角 i = i0 + idot*tk + cic*cos(2*phi) + cis*sin(2*phi); % 旋转矩阵,从卫星轨道平面坐标系转换到地心地固坐标系 R = [cos(Omega)*cos(omega)-sin(Omega)*sin(omega)*cos(i) -cos(Omega)*sin(omega)-sin(Omega)*cos(omega)*cos(i) sin(Omega)*sin(i); sin(Omega)*cos(omega)+cos(Omega)*sin(omega)*cos(i) -sin(Omega)*sin(omega)+cos(Omega)*cos(omega)*cos(i) -cos(Omega)*sin(i); sin(omega)*sin(i) cos(omega)*sin(i) cos(i) ]; % 计算卫星在轨道平面坐标系下的坐标 satpos_in = [r*cos(v) r*sin(v) 0]; % 利用旋转矩阵计算在地心地固坐标系下的位置 satpos = R * satpos_in; % 计算卫星钟差 dt = af0 + af1*tk + af2*tk^2; satpos = [satpos; dt];

69,380

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧