2014-11-05 2 views
1

Как вызвать скрипт для функции и vica versa в Matlab/Octave?Вызывающие функции и скрипты в Matlab/Octave

function mean_DNA_Microarray = Calc_mean_DNA_Microarray(M) 
    M = DNA_Microarray 
    mean_DNA_Microarray = M - ones(5,25)*mean(M(:,25)) 
end 

Отклик

error: invalid call to script C:\Users\Nacho\Documents\Matlab\DNA_Microarray.m error: called from: error: C:\Users\Nacho\Documents\Matlab\Calc_mean_DNA_Microarray.m at line 3, column 3

Теперь это будет работать, если я позвоню DNA_Microarray функция, но проблема требует, чтобы он остается в качестве сценария.

+1

? Вы пытались ввести имя функции/скрипта? –

+0

Вот код, который я написал: function mean_DNA_Microarray = DNA_Microarray C = M - единицы (5,25) * mean (M (:, 25)) конец, где DNA_Microarray - это имя сценария, который я пытаюсь позвонить – Raymond

+0

Редактировать свой вопрос с помощью кода, без разломов строк, это не имеет смысла –

ответ

3

Прежде всего, вы не определяете свою функцию правильно, так как функция не знает, что такое M (если только это не глобально, но я сомневаюсь).

В любом языке программирования вам нужно указать функцию, с которой переменные будут работать. Это не Matlab. В Matlab вы будете делать это так:

function mean_DNA_Microarray = Calc_mean_DNA_Microarray(M) % Look! we are telling him what M is! 
    mean_DNA_Microarray = M - ones(5,25)*mean(M(:,25)) 
end 

Затем вы хотите, чтобы все функции из другого места вам нужно будет просто ввести свое имя и передать в аргументы, в этом случае, что внутри функции будет называться M

clear; 
clc; 
% Test code 
Mnameoutofthefunction=rand(100,100); 
DNAmean = DNA_Microarray(Mnameoutofthefunction); % here we are calling it! 

Не забудьте сохранить функцию functionname.m, в вашем случае DNA_Microarray.m, иначе Matlab обыкновение знать, какой он есть.

Но я настоятельно рекомендую вам прочитать книгу о Matlab или просто о программировании в целом, поскольку, похоже, вы могли бы воспользоваться некоторым базовым введением.

После @ am304 предложение, здесь вы можете найти хорошие учебники:

http://www.mathworks.co.uk/academia/student_center/tutorials/

EDIT То, что вы хотите сделать, это создать функцию следующим образом:

function mean_DNA_Microarray = Calc_mean_DNA_Microarray(M) % Look! we are telling him what M is! 
    mean_DNA_Microarray = M - ones(5,25)*mean(M(:,25)) 
end 

И затем, внутри вашей функции DNA_Microarray вызов Calc_mean_DNA_Microarray с вводом M

+2

Не следует ли заменять 'C' на' mean_DNA_Microarray'? – Divakar

+0

@Divakar правильный, 'C' должен быть заменен на' mean_DNA_Microarray' в коде, иначе он не будет работать. Чтобы следовать рекомендациям Андера Бигури, я бы посоветовал пройти учебное пособие по адресу http://www.mathworks.co.uk/academia/student_center/tutorials/. – am304

+0

@ Divakar мой плохой, я просто переписал код здесь и забыл изменить это. Благодаря! –