Tag: matlab

存储数据时,fminsearch在循环中覆盖

我有以下在matlab中提到的代码。 我想把所有的162行和4列写入excel文件。 当我在代码中使用xlswrite时,我只得到一行和四列,因为P的值会在每个迭代步骤中被覆盖。 如果我使用for循环内的另一个循环执行时间急剧增加。 请帮助至less把P的值写入一个数组,我可以稍后写入excel文件(当我尝试'在一个赋值A(I)= B,B和I中的元素数目必须是相同的'错误出现。) 请帮忙 function FitSMC_BC clc % Parameters: P(1)=theta_S; P(2)=theta_r; P(3)=psib; P(4)=lamda; smcdata=xlsread('asimdata'); nn=length(smcdata)-1; for i=1:nn psi=smcdata(:,1); thetaObs=smcdata(:,i+1); %Make an initial guess: Pini=[0.5 0.1 -1 1.5]; P=fminsearch(@ObFun,Pini,[],psi,thetaObs); disp(['result',num2str(i),': P=',num2str(P)]); theta=Gettheta(P,psi); end function OF=ObFun(P,psi,thetaObs) theta=Gettheta(P,psi); OF=sqrt(mean((theta – thetaObs).^2)); function theta=Gettheta(P,psi) SoilPars.theta_S=P(1); SoilPars.theta_r=P(2); SoilPars.psib=P(3); SoilPars.lamda=P(4); [theta]=thetaFun(psi,SoilPars); function [theta]=thetaFun(psi,SoilPars) theta_S=SoilPars.theta_S; theta_r=SoilPars.theta_r; psib=SoilPars.psib; lamda=SoilPars.lamda; theta=theta_r+((theta_S-theta_r)*((psib./psi).^lamda)); […]

从excel导入date到matlab

当我使用'xlsread'命令将时间序列从excel导入到matlab时,我遇到了date问题。 例如,在我的Excel电子表格中,截至2013年12月9日09:03(2013年12月9日)的date/时间翻译为等于41617.37708333330的数字。 当我将它导入到matlab,在序列date数字types保持不变41617.37708333330,但是当我将它转换为datestring或date向量types(使用命令detester或分别datevec)它转换 10-Dec-0113 09:03:00 or [113 12 10 9 3 0] 即一天后(10而不是9)和不同的一年(0113而不是2013)。 有谁知道为什么是这种情况,如何解决? 预先感谢您的任何帮助。 约翰

什么是Excel的WORKDAY函数的MATLAB等价物?

有没有一种简单的方法来做相当于matlab中的excel的WORKDAY函数? 谢谢你的帮助 洛朗

多边形面积计算差异使用MatLab的Polyarea到Excel的SumProduct

我正在计算这个多边形所包围的区域: 由一组坐标给出: 0 2.06667 1.14815 2.06667 3.44444 2.75556 5.74074 3.44444 9.18519 3.44444 16.0741 2.75556 26.4074 1.83704 35.5926 1.14815 38.2333 0.688889 38.75 0.028704 我原来在Excel中使用Sumproduct 方法 ,得到了一个似乎是合理的答案。 我使用的Excel公式是: =0.5*ABS(SUMPRODUCT(F30:F39,G31:G40)-SUMPRODUCT(G30:G39,F31:F40)) 用F30:G40: 0 2.06667 1.14815 2.06667 3.44444 2.75556 5.74074 3.44444 9.18519 3.44444 16.0741 2.75556 26.4074 1.83704 35.5926 1.14815 38.2333 0.688889 38.75 0.028704 0 0 结果是87.74 。 移至Matlab后,我开始使用多polyarea ,答案看起来不合理。 有问题的代码是: […]

如何删除只有一些列中缺less值的整行?

我需要使用matlab编程删除excel文件中的空列的所有行。 我有一个Excel文件内的多个工作表,数据格式如下: 1 2 3 4 5 2 3 4 5 5 6 7 8 9 12 13 14 15 16 6 2 8 4 1 2 3 5 7 9 8 34 3 3 2 7 8 4 在上面的示例中,我在第2,5和7行(第5列中的所有空单元格)中都有空单元格。 我需要find这些空值,并删除包含这些值的行,即我只需要删除第2,5和7行。最后的输出应该是像下面的Excel文件 1 2 3 4 5 5 6 7 8 9 12 13 14 15 […]

在MATLab中从同一个Excel工作表导入两组数据

我正在为一所大学的教授开发一个小型项目,他需要通过MATLAB对数据进行sorting,并对数据进行各种其他操作。 我已阅读的数据没有问题,使用: filename = 'file.xlsx'; data = xlsread(filename) 这样它将所有数据导入一个大matrix。 从这里,在文件本身,数据被分成两大类,左膝和右膝。 我的问题是我试图分开数据,但没有运气。 由于这两个集合没有被相等的行分开,我不能使用一个简单的数组来select不同的列。 绿柱设置一个,黄金设置两个。 有没有办法,我可以看看第二行,看看是否是左或右,然后把数据放入不同的方式? 还是有更好的方法呢?

从Matlab发送短信,并确保所有收件人获得短信

我创build了一个matlab代码,它从Excel文件的列O获取电话号码,然后,它发送一个sms给他们。 它的工作,但发送sms时有问题。 似乎matlab不会等到我的调制解调器完成第一个sms 。 所以,当excel栏有8个电话号码时,调制解调器只能发送一个sms到前3-4个。 这是代码: [num MP]=xlsread('D:\Ray\Data.xls',1,'O:O'); %get the phone numbers from excel MP=MP(cellfun(@(x)not(isempty(x)),MP)); %remove the empty cells [row column]=size(MP); %get the number of the phone numbers t1=char(13); %(for doing 'enter') t2=char(26); %(for doing 'ctrl+z) sms='hello'; %SMS content t4=sprintf('%s',sms); t5='AT+CMGF=1'; %for text mode s = serial('COM5'); s.baudrate=9600; fopen(s); %open serial COM5 (my modem) fprintf(s,'%s', […]

使用“addtrendline”函数的Excel中的R平方值?

我一直在挣扎, 简而言之,我无法findExcel用于R 2的等式。 这里是我的数据: x:1 2 3 4 5 6 7 8 9 10 y:4 9 1 2 1 1 8 5 5 1 我绘制数据,拟合幂律函数('添加趋势线'),并使用“添加趋势线”选项>在图表上显示R平方值 显示的值: R 2 = 0.03008 。 问题1 如果我使用'RSQ()'函数(取Excel中的拟合函数的参数值),或使用定义(维基百科)手工在Excel中计算出来… R 2 = 0.0272 问题2 在Matlab中,使用'fit'函数,拟合函数的参数(当然是R 2 )不是EXCELfind的那些参数。 问题: 所以这是我的主要问题: Excel如何在“添加趋势线”函数中计算R 2 ,因为它显然不是定义(维基百科)中的那个? 和奖金问题: 为什么Excel和Matlab不会以相同的拟合参数结束? 非常感谢! %%%%%%编辑下面! %%%% 作为评论的答案; 这里是我使用的Matlab代码: %% R-squared […]

如何保存数据在Excel表中使用Matlab?

我想以Excel表格的forms保存我的数据。 它应该看起来像: Name | Age | R_no | Gpa Adnan | 24 | 18 | 3.55 Ahmad | 22 | 12 | 3.44 Usman | 23 | 22 | 3.00 每当我将执行我的文件classData.m ,行将被添加到下面。 就像我想添加下一行一样 john | 21 | 44 | 3.53 variablesn ='john',ag = 22,rn = 44,gp = 3.53

根据应用于另一个vector的条件创buildvector

我对Matlab很新。 这似乎是一个简单的事情,我确定其缺乏经验,所以提前道歉。 基本上,我想用两行信息来覆盖另一个数据。 我有两行数据输出,例如: B = [1 2 3 4 1 2 3 4] C = [0 1 1 0 0 0 1 0] 然后,我设置新的行D和E将用于新的基于规则的输出: D=nan(1,8); E=nan(1,8); 我想用C中的值覆盖与B的值对应的D / E的单元格: 例如,对于B = 1,我想得到: D= [0 nan nan nan 0 nan nan nan] 而对于B = 3我想: E= [nan nan 1 nan nan nan 1 nan] 我目前的尝试是这样的(但它不工作): […]