MATLAB: ошибки при использовании rdivide; матричное деление - PullRequest
1 голос
/ 28 февраля 2012

Я ссылаюсь на внешний текстовый файл, сгенерированный из другой программы. Это в основном вычисляет объем для меня в определенной области. Я должен применить коррекцию к объему в зависимости от дня, и это нужно t фактор в "коэффициент увеличения объема".

В командном окне я могу сделать non_pay / 2 и получить ответ, но, запустив мою программу через редактор (см. Командную строку%), я получаю ошибки mrdivide или rdivide. Я не вижу, как я могу запустить функцию в командном окне с тем же значением пользовательского ввода и получить ответ, находясь в редакторе, я делю на уже определенную переменную и полученные ошибки.

Предложения

%Imports the tin report data
tin = input('Enter Tin Report: ','s') ;
ref_tin = importdata(tin,' ',23);
ref = ref_tin.data;

rownum = input('Enter Row Number: ','s');

%Determines if a bulking factor is present or not
reply = input('Is there a bulking factor for this dredge area? (y/n): ', 's');
if strcmp(reply,'y')
    bulk_fctr = input('Enter Bulking Factor: ','s');
else
    bulk_fctr=1;
    disp('NO Bulking Factor')
end


%Imports conditional tin report data
[n,m] = size(ref);
cnd_tin = importdata(tin,' ',48+n);
cnd = cnd_tin.data;

%Imports tin to level data level: 52 ft
grd_tin = importdata(tin,' ',71+n*2);
grd = grd_tin.data;

%Imports tin to level data level: 53.5 ft
od_tin = importdata(tin,' ',75+n*3);
od = od_tin.data(1:n,:);

%Data to be written to production database
non_pay = round((ref(:,2)-cnd(:,2)));                  %yd^3
%non_pay2 = non_pay/bulk_fctr;
volume_removed = round((ref(:,1)-cnd(:,1))+non_pay);   %yd^3
%volume_removed2 = volume_removed./bulk_fctr;
pay_volume = round(volume_removed - non_pay);          %yd^3
area = round(ref(:,3));                                %ft^2
abv_grd = round(grd(:,1));                             %yd^3
pay_rmg = round(od(:,1));                              %yd^3

data = [volume_removed,non_pay,pay_volume,area,abv_grd,pay_rmg];

1 Ответ

1 голос
/ 28 февраля 2012

Когда вы запрашиваете ввод для «Ввод коэффициента заполнения», вы получаете строку, так как вы даете ей аргумент «s».Оставьте это, и вы получите обратно значение, а не массив символов.

if strcmp(reply,'y')
    bulk_fctr = input('Enter Bulking Factor: ');
else
    bulk_fctr=1;
    disp('NO Bulking Factor')
end

Изменить, чтобы добавить: вы должны также добавить несколько проверок, чтобы убедиться, что ввод действителен.

isnumeric(bulk_fctr) && isscalar(bulk_fctr)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...