本文整理汇总了C++中matrix_type::rows方法的典型用法代码示例。如果您正苦于以下问题:C++ matrix_type::rows方法的具体用法?C++ matrix_type::rows怎么用?C++ matrix_type::rows使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类matrix_type
的用法示例。
在下文中一共展示了matrix_type::rows方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: run
void run()
{
// Read filenames
vector<std::string> filenames;
{
std::string folder = Path::dirname (argument[0]);
std::ifstream ifs (argument[0].c_str());
std::string temp;
while (getline (ifs, temp)) {
std::string filename (Path::join (folder, temp));
size_t p = filename.find_last_not_of(" \t");
if (std::string::npos != p)
filename.erase(p+1);
if (filename.size()) {
if (!MR::Path::exists (filename))
throw Exception ("Input connectome file not found: \"" + filename + "\"");
filenames.push_back (filename);
}
}
}
const MR::Connectome::matrix_type example_connectome = load_matrix (filenames.front());
if (example_connectome.rows() != example_connectome.cols())
throw Exception ("Connectome of first subject is not square (" + str(example_connectome.rows()) + " x " + str(example_connectome.cols()) + ")");
const MR::Connectome::node_t num_nodes = example_connectome.rows();
// Initialise enhancement algorithm
std::shared_ptr<Stats::EnhancerBase> enhancer;
switch (int(argument[1])) {
case 0: {
auto opt = get_options ("threshold");
if (!opt.size())
throw Exception ("For NBS algorithm, -threshold option must be provided");
enhancer.reset (new MR::Connectome::Enhance::NBS (num_nodes, opt[0][0]));
}
break;
case 1: {
std::shared_ptr<Stats::TFCE::EnhancerBase> base (new MR::Connectome::Enhance::NBS (num_nodes));
enhancer.reset (new Stats::TFCE::Wrapper (base));
load_tfce_parameters (*(dynamic_cast<Stats::TFCE::Wrapper*>(enhancer.get())));
if (get_options ("threshold").size())
WARN (std::string (argument[1]) + " is a threshold-free algorithm; -threshold option ignored");
}
break;
case 2: {
enhancer.reset (new MR::Connectome::Enhance::PassThrough());
if (get_options ("threshold").size())
WARN ("No enhancement algorithm being used; -threshold option ignored");
}
break;
default:
throw Exception ("Unknown enhancement algorithm");
}
size_t num_perms = get_option_value ("nperms", DEFAULT_NUMBER_PERMUTATIONS);
const bool do_nonstationary_adjustment = get_options ("nonstationary").size();
size_t nperms_nonstationary = get_option_value ("nperms_nonstationarity", DEFAULT_NUMBER_PERMUTATIONS_NONSTATIONARITY);
// Load design matrix
const matrix_type design = load_matrix (argument[2]);
if (size_t(design.rows()) != filenames.size())
throw Exception ("number of subjects does not match number of rows in design matrix");
// Load permutations file if supplied
auto opt = get_options("permutations");
vector<vector<size_t> > permutations;
if (opt.size()) {
permutations = Math::Stats::Permutation::load_permutations_file (opt[0][0]);
num_perms = permutations.size();
if (permutations[0].size() != (size_t)design.rows())
throw Exception ("number of rows in the permutations file (" + str(opt[0][0]) + ") does not match number of rows in design matrix");
}
// Load non-stationary correction permutations file if supplied
opt = get_options("permutations_nonstationary");
vector<vector<size_t> > permutations_nonstationary;
if (opt.size()) {
permutations_nonstationary = Math::Stats::Permutation::load_permutations_file (opt[0][0]);
nperms_nonstationary = permutations.size();
if (permutations_nonstationary[0].size() != (size_t)design.rows())
throw Exception ("number of rows in the nonstationary permutations file (" + str(opt[0][0]) + ") does not match number of rows in design matrix");
}
// Load contrast matrix
matrix_type contrast = load_matrix (argument[3]);
if (contrast.cols() > design.cols())
throw Exception ("too many contrasts for design matrix");
contrast.conservativeResize (contrast.rows(), design.cols());
const std::string output_prefix = argument[4];
// Load input data
// For compatibility with existing statistics code, symmetric matrix data is adjusted
// into vector form - one row per edge in the symmetric connectome. The Mat2Vec class
// deals with the re-ordering of matrix data into this form.
MR::Connectome::Mat2Vec mat2vec (num_nodes);
const size_t num_edges = mat2vec.vec_size();
matrix_type data (num_edges, filenames.size());
//.........这里部分代码省略.........
示例2: run
void run() {
const value_type cluster_forming_threshold = get_option_value ("threshold", NaN);
const value_type tfce_dh = get_option_value ("tfce_dh", DEFAULT_TFCE_DH);
const value_type tfce_H = get_option_value ("tfce_h", DEFAULT_TFCE_H);
const value_type tfce_E = get_option_value ("tfce_e", DEFAULT_TFCE_E);
const bool use_tfce = !std::isfinite (cluster_forming_threshold);
int num_perms = get_option_value ("nperms", DEFAULT_NUMBER_PERMUTATIONS);
int nperms_nonstationary = get_option_value ("nperms_nonstationary", DEFAULT_NUMBER_PERMUTATIONS_NONSTATIONARITY);
const bool do_26_connectivity = get_options("connectivity").size();
const bool do_nonstationary_adjustment = get_options ("nonstationary").size();
// Read filenames
vector<std::string> subjects;
{
std::string folder = Path::dirname (argument[0]);
std::ifstream ifs (argument[0].c_str());
std::string temp;
while (getline (ifs, temp))
subjects.push_back (Path::join (folder, temp));
}
// Load design matrix
const matrix_type design = load_matrix<value_type> (argument[1]);
if (design.rows() != (ssize_t)subjects.size())
throw Exception ("number of input files does not match number of rows in design matrix");
// Load permutations file if supplied
auto opt = get_options("permutations");
vector<vector<size_t> > permutations;
if (opt.size()) {
permutations = Math::Stats::Permutation::load_permutations_file (opt[0][0]);
num_perms = permutations.size();
if (permutations[0].size() != (size_t)design.rows())
throw Exception ("number of rows in the permutations file (" + str(opt[0][0]) + ") does not match number of rows in design matrix");
}
// Load non-stationary correction permutations file if supplied
opt = get_options("permutations_nonstationary");
vector<vector<size_t> > permutations_nonstationary;
if (opt.size()) {
permutations_nonstationary = Math::Stats::Permutation::load_permutations_file (opt[0][0]);
nperms_nonstationary = permutations.size();
if (permutations_nonstationary[0].size() != (size_t)design.rows())
throw Exception ("number of rows in the nonstationary permutations file (" + str(opt[0][0]) + ") does not match number of rows in design matrix");
}
// Load contrast matrix
const matrix_type contrast = load_matrix<value_type> (argument[2]);
if (contrast.cols() != design.cols())
throw Exception ("the number of contrasts does not equal the number of columns in the design matrix");
auto mask_header = Header::open (argument[3]);
// Load Mask and compute adjacency
auto mask_image = mask_header.get_image<value_type>();
Filter::Connector connector (do_26_connectivity);
vector<vector<int> > mask_indices = connector.precompute_adjacency (mask_image);
const size_t num_vox = mask_indices.size();
matrix_type data (num_vox, subjects.size());
{
// Load images
ProgressBar progress("loading images", subjects.size());
for (size_t subject = 0; subject < subjects.size(); subject++) {
LogLevelLatch log_level (0);
auto input_image = Image<float>::open (subjects[subject]); //.with_direct_io (3); <- Should be inputting 3D images?
check_dimensions (input_image, mask_image, 0, 3);
int index = 0;
vector<vector<int> >::iterator it;
for (it = mask_indices.begin(); it != mask_indices.end(); ++it) {
input_image.index(0) = (*it)[0];
input_image.index(1) = (*it)[1];
input_image.index(2) = (*it)[2];
data (index++, subject) = input_image.value();
}
progress++;
}
}
if (!data.allFinite())
WARN ("input data contains non-finite value(s)");
Header output_header (mask_header);
output_header.datatype() = DataType::Float32;
output_header.keyval()["num permutations"] = str(num_perms);
output_header.keyval()["26 connectivity"] = str(do_26_connectivity);
output_header.keyval()["nonstationary adjustment"] = str(do_nonstationary_adjustment);
if (use_tfce) {
output_header.keyval()["tfce_dh"] = str(tfce_dh);
output_header.keyval()["tfce_e"] = str(tfce_E);
output_header.keyval()["tfce_h"] = str(tfce_H);
} else {
output_header.keyval()["threshold"] = str(cluster_forming_threshold);
}
const std::string prefix (argument[4]);
bool compute_negative_contrast = get_options("negative").size();
vector_type default_cluster_output (num_vox);
//.........这里部分代码省略.........