用户定义的函数出错

时间:2016-08-06 21:08:38

标签: matlab

做家庭作业,这是一个给我带来麻烦的问题。问题是:

a)创建一个名为nmoles的函数M文件,需要两个向量输入 - 质量和分子量 - 并返回相应的数字 痣。因为您提供矢量输入,所以它是必要的 在计算中使用meshgrid函数。

b)测试下表所示化合物的功能 质量从1到10克:

在我的函数文件中,我得到了:

function [ n ] = nmoles(m, MW)
%% Finds number of moles


m = (1:10); %% mass range
MW = [78.115 46.07 102.3]; %% Values from the table

n=m/MW; %%formula provided by the textbook

我的主文件只有:

nmoles(m,MW)

我收到错误:“使用/ Matrix尺寸时出错必须同意” 另外:nmoles误差(第10行)n = m / MW;

我对MATLAB缺乏经验并且仍在学习语法,但我认为我的公式不正确并且我使用了错误的符号来划分,但我不确定如何纠正这一点。另外,我如何将meshgrid函数合并到我的anwser中?

1 个答案:

答案 0 :(得分:1)

以下是您的功能应该如何:

function [ n ] = nmoles(m, MW)
% Finds number of moles
[mv,MWv] = meshgrid(m, MW); % extends m and MW to match all combinations.
n = mv./MWv; %formula provided by the textbook
end

然后你的主要脚本应该是:

m = 1:10; % mass range
MW = [78.115 46.07 102.3]; % Values from the table
nmoles(m, MW)

你有3个错误:

  1. 如果您将mMW作为该函数的输入,则不要在其中定义它们。
  2. 因为您想要质量和摩尔质量的每种组合的摩尔数,所以使用meshgrid
  3. 如果要对2个阵列执行元素分割或乘法运算,请在./之前加*。在MATLAB中,默认情况下一切都是矩阵,因此默认情况下,此操作被解释为矩阵multiplicationdivision。如果您想要regular divisionmultiplication,请使用.*./。对于权力(^.^)也是如此。